python-将属性对象分配给内联对象

也许您可以定义一个属性并将其分配给一个对象,如下所示:

a = property(lambda self: getattr(self, "_a"), lambda self, x: setattr(self, "_a", x+1))
b = type("B", (object,), {"a": a, "_a": None})

事实证明,调用b.a = 2会覆盖该属性.

这就是我尝试使用倾斜对象复制的内容.

class B:
    _a = None

    @property
    def a(self):
        return self._a

    @a.setter
    def a(self, x):
        self._a = x

这可能会提供一些线索.

class B:
    _a = None
    a = property(
        lambda self: getattr(self, "_a"), 
        lambda self, x: setattr(self, "_a", x+1)
    )

第一个摘要和第二个摘要之间有什么区别?

编辑:
根据搅拌机的建议,我了解

a = property(lambda self: getattr(self, "_a"), lambda self, x: setattr(self, "_a", x+1))
B = type("B", (object,), {"a": a, "_a": None})
b = B()
b.a = 2
print(b.a)

>>> 3

最佳答案

b = type(…)定义新类型,而不是新类型的实例.我将其重命名为B = type(…),并像使用其他类定义一样使用它:

In [25]: a = property(lambda self: getattr(self, "_a"), lambda self, x: setattr(self, "_a", x+1))

In [26]: B = type("B", (object,), {"a": a, "_a": None})

In [27]: b = B()

In [28]: b.a = 10

In [29]: b.a
Out[29]: 11