【发布时间】:2021-07-26 16:02:52
【问题描述】:
我正在尝试用属性重新定义对象的属性
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>
我想用类似于def foo 的东西重新定义bar
问题是,我无法编辑MyClass,并且无法更改execute 函数
另外,我不确定 lambda 是否可以与 self(MyClass 的实例)一起使用
是否可以在运行时使用选项修补对象?
【问题讨论】:
-
@Asocia 是的,这也很有用,之前没有找到这个帖子。谢谢!
标签: python