【发布时间】:2013-01-15 16:16:43
【问题描述】:
这应该很容易,但是因为我错过了一些东西。
我有一个完全符合我预期的对象。
class TextElement(ContentItemElement):
'''
Single String Elements, for example, headlines
'''
def __init__(self, name, data):
super(TextElement, self).__init__()
self.name=name
self.text=data
def prettyPrint(self):
printstring = u'*HTML* '
self.name.encode('utf-8')
printstring += u'<h3> '+self.name+u' </h3>'
self.text.encode('utf-8')
printstring += u'<p> '+self.text+u' </h3>'
print printstring
好的,太好了,我可以实例化它,它完全按照我的意愿去做。但我真的很想创建一个更具体的 TextObjects 版本。所以我这样做:
class CiteElement(TextElement):
'''
Single String Elements, for example, headlines
'''
def __init__(self, name, data):
super(CiteElement, self).__init__()
self.validValues=['Crap I make up', 'Crap I found on the web']
但是当我尝试实例化它时,这有效:
ee = TextElement(element, self.raw[element])
ee.validValues=['Crap I make up', 'Crap I found on the web']
但这不是
ee = CiteElement(element, self.raw[element])
而是给我这个错误:
TypeError: __init__() takes exactly 3 arguments (1 given)
显然我遗漏了一些小东西。 python对象的关键。我应该很清楚的东西,但多年来一直在编码。但它是什么?
【问题讨论】:
-
修复类中代码的缩进
-
抱歉,这是堆栈,不是我的代码。固定。
-
@SkipHuffman -- 不太固定。您的文档字符串仍然不对齐。
标签: python oop object instantiation