3
也許你可以定義屬性,並將其分配給一個對象,像這樣:分配屬性對象爲嵌入對象
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 =類型(...)'定義了一個新的類型,而不是一個新的類型的實例。將它重命名爲'B = type(...)'並像使用其他類定義一樣使用它。我錯過了什麼嗎? – Blender
啊哈!不同之處在於我的工作片段中的b沒有實例化。謝謝。 – Simon