私はパラメータでURLを受け取り、ニュースサイトでクローラを起動するPythonクラスを持っています。OOP PYTHON:__init__を呼び出さずにcls()を使用して複数のコンストラクタを作成する
オブジェクトの作成が完了すると、オブジェクトはElasticsearchクラスタに格納されます。
私は、Elasticsearchドキュメントを入力し、そこからオブジェクトを作成するメソッドを作成したいと考えています。問題がある
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']
.
.
.
、私が呼んでいる...
# response is my document from elasticsearch
res = NewsArticle.from_elasticsearch(response)
... __init__
が呼ばれると私のクローラを起動します方法。とにかくクローラを起動しない、またはinitメソッドを呼び出すことはありませんか?シンプルif
とデフォルトパラメータcrawl
について
だからあなたがオブジェクトを初期化せずにオブジェクトを作成したいですか? –
あなたの '__init__'にクローラを置いてはいけないかもしれません。 – khelwood
@StevenSummers 2つの異なるコンストラクタを持つことができるかどうか2つを知りたい場合は – mel