我有一个向其中添加动态属性的泛型类,并且我想向实例动态添加方法,因为某些实例将具有不同的方法,但它们需要访问这些动态属性。
我该怎么做呢?
class GenericComponent:
def __init__(self, ID):
self.ID = ID
@classmethod
def addMethod(cls, func):
return setattr(cls, func.__name__, types.MethodType(func, cls))
在我的逻辑中,当我构建这些通用组件时,我有类似的东西,因此对于不同的实例,我将拥有相同的方法名称,但其中的逻辑是不同的。
if t==0:
def toString(target):
print "toString: ", target
attrs = vars(target)
print ', '.join("%s: %s" % item for item in attrs.items())
obj = GenericComponent(ID)
obj.ID = ID
obj.name = "some random name"
obj.addMethod(toString)
obj.toString()
不幸的是,当我打电话时obj.toString()
它不会看到obj.name