Python (2.6) seems to be derping for no reason, can anyone see a problem with this code?
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")
Fails with the exception:
AttributeError: ‘property’ object has no attribute ‘doSomething’
It was my understanding that a property would automatically run its getter when accessed, so why is it complaining about a property object, and why isn’t it finding my clearly available method?
In addition to needing to inherit from
object, properties only work on instances.To make a property work on the class, you can define a metaclass. (A class is an instance of a metaclass, so properties defined on the metaclass work on the class, just as properties defined on a class work on an instance of that class.)