gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:02 24 4
gpt4 key购买 nike

也许您可以像这样定义一个属性并将其分配给一个对象:

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)
)

第一个片段和第二个片段有什么区别?

编辑:根据 blender 的建议,我明白了

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

关于python - 将属性对象分配给内联对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com