Ich habe eine Python-Klasse, die eine URL in Parameter übernimmt und einen Crawler auf einer Nachrichtenwebsite startet.OOP PYTHON: Verwenden von cls() zum Erstellen mehrerer Konstruktoren ohne Aufruf von __init__
Sobald die Erstellung des Objekts abgeschlossen ist, wird das Objekt in einem Elasticsearch-Cluster gespeichert.
Ich möchte eine Methode erstellen, die das Elasticsearch-Dokument eingibt und ein Objekt daraus erstellt.
class NewsArticle():
def __init__(self, url):
self.url = url
# Launch a crawler and fill in the other fields like author, date, ect ...
@classmethod
def from_elasticsearch(cls, elasticsearch_article):
document = elasticsearch_article['_source']
obj = cls(document['url'])
obj.url = document['url']
obj.author = document['author']
.
.
.
Das Problem ist, wenn ich rufe ...
# response is my document from elasticsearch
res = NewsArticle.from_elasticsearch(response)
... die Methode __init__
wird aufgerufen und wird mein Crawler starten. Gibt es trotzdem, dass es meinen Crawler nicht startet oder die init-Methode aufruft?
So möchten Sie ein Objekt erstellen, ohne ein Objekt zu initialisieren? –
Vielleicht solltest du dieses Crawler-Zeug nicht in deinem '__init__' haben. – khelwood
@StevenSummers Ich möchte zwei wissen, wenn ich 2 differents Konstruktoren haben kann – mel