这是我的代码
wget -e robots=off --wait 0.25 --recursive --no-parent ...
我收到了这个错误:
class ElasticsearchController(object):
def __init__(self):
self.es = Elasticsearch(['blabla'], port=9200)
class MasterDataIndexController(ElasticsearchController):
def __init__(self):
self.indexName = "bbbbb"
def search(self, query):
return super.es.search(index=self.indexName, docuemntType = self.documentType, query = query)
虽然超级确实拥有它。
请问好吗?
答案 0 :(得分:4)
你没有初始化你的超级课程。
class ElasticsearchController(object):
def __init__(self):
self.es = Elasticsearch(['a.b.c.d'], port=1234)
class MasterDataIndexController(ElasticsearchController):
def __init__(self):
super(MasterDataIndexController, self).__init__()
#^^^^^^^^^^^
self.indexName = "bbbbb"
def search(self, query):
return self.es.search(index=self.indexName, docuemntType = self.documentType, query = query)
# ^^^^^ self should be fine.
答案 1 :(得分:3)
你不能那样使用super
。 super
将允许您访问超类,但不应将其用作self
的快捷方式。根据您是否使用python或python 3,您可以调用super(MyClass, self)
或super()
。您可以在初始化期间使用它来调用超类的__init__
方法。
但是,在大多数简单的类层次结构中,没有必要调用super,如果只调用SuperClass.__init__(self)
,则代码会更清晰。
在此之后,您应该只能使用self
和属性访问。