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是的,这也是有用的,以前没有找到过这个帖子。非常感谢。谢谢它起作用了