У меня есть общий класс, к которому я добавляю динамические свойства, и я хочу динамически добавлять экземпляры в экземпляры, так как некоторые экземпляры будут иметь разные методы, но им необходимо получить доступ к этим динамические свойства.Как добавить динамически добавленные функции для динамически добавленных свойств
Как это сделать?
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
Я буду стараться, что утром. Спасибо. Сотрудник предположил, что я могу использовать obj.getattr («name») вместо obj.name, и это может работать лучше. В основном я работаю над проектом, где мы не знаем, как мы будем решать проблему, и если я использую определенные классы вместо того, чтобы быть настолько динамичными, то мы можем быть заблокированы в конкретном проекте. Будучи очень динамичным, я не заперт в какой-либо конструкции. –