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)
)
最初のスニペットと2番目のスニペットの違いは何ですか?
編集: Iは
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
Aha!違いは、私の動作していないスニペットのbがインスタンス化されていないということでした。ありがとうございました。 – Simon