AttributeError:“属性”对象没有属性
问题内容:
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:“属性”对象没有属性“ doSomething”
我的理解是,属性在访问时会自动运行其getter,那么为什么它抱怨一个属性对象,为什么它找不到我明确可用的方法?
问题答案:
除了需要继承之外object
,属性仅适用于实例。
a = A()
a.db.doSomething("blah")
要使属性适用于该类,可以定义一个元类。(类是元类的实例,因此在元类上定义的属性在该类上起作用,就像在类上定义的属性在该类的实例上起作用一样。)