【发布时间】:2012-12-01 18:36:25
【问题描述】:
Python (2.6) 似乎是无缘无故的,有人能看出这段代码有问题吗?
class DB ():
def doSomething (self, str):
print str
class A ():
__db = DB()
@staticmethod
def getDB ():
return A.__db
db = property(getDB)
A.db.doSomething("blah")
异常失败:
AttributeError: 'property' 对象没有属性 'doSomething'
我的理解是,一个属性在访问时会自动运行它的 getter,那么为什么它会抱怨一个属性对象,为什么它没有找到我明确可用的方法?
【问题讨论】:
-
什么 Python 版本?如果使用 Python 2.x,则需要构建继承自
object...的类... -
@JonClements -- 好眼力!看来 OP 正在使用 python2.x 因为 OP 使用
print str -
2.6,类工作正常,无需从对象继承。我需要这样做才能使属性正常工作吗?
-
@ben 除非你有充分的理由——你所有的对象都应该继承自
object -
对不起,乔恩,我忘了在我的示例中添加 staticmethod 装饰器。我不会实例化这个类,所以从对象继承将没有效果。无论如何,从对象继承有什么好处?
标签: python class exception object properties