Python将属性的属性添加到类的实例
我正在尝试为具有属性的对象重新定义属性Python将属性的属性添加到类的实例,python,Python,我正在尝试为具有属性的对象重新定义属性 class MyClass: asd = 'asd_string' @property def foo(self): return 1 if self.asd is not None else None def execute(obj): print(obj.bar) if __name__ == '__main__': obj = MyClass() obj.bar = 42
class MyClass:
asd = 'asd_string'
@property
def foo(self):
return 1 if self.asd is not None else None
def execute(obj):
print(obj.bar)
if __name__ == '__main__':
obj = MyClass()
obj.bar = 42
execute(obj) # 42
obj.bar = property(fget=lambda self: 1 if self.asd is not None else None)
execute(obj) # <property object at 0x7fd058ef7400>
class-MyClass:
asd='asd_字符串'
@财产
def foo(self):
如果self.asd不是None-other-None,则返回1
def执行(obj):
打印(对象栏)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
obj=MyClass()
obj.bar=42
执行(obj)#42
obj.bar=property(如果self.asd不是None-other-None,则fget=lambda-self:1)
执行(obj)#
我想用类似于def foo
问题是,我无法编辑MyClass
,并且a无法更改execute
函数
另外,我不确定lambda是否能与self一起工作(MyClass的实例MyClass
)
是否可以在运行时使用选项修补对象?您可以将新属性添加到实例中
prop = property(fget=lambda self: 1 if self.asd is not None else None)
setattr(MyClass, 'bar', prop)
# or
MyClass.bar = prop
execute(obj) # 1
@Asocia是的,这也是有用的,以前没有找到过这个帖子。非常感谢。谢谢它起作用了