前にこれが重複フラグが設定されていますが、これは前にquestion has been answeredということがわかりましたが、ここで提供されている解決策は私のケースには当てはまりません。クラスプロパティをプログラムで設定しようとしています。私はそのためのproperty
を使用することができます知っているので、私はこのことについて考えた:私は対話的にこれを実行するとプロパティオブジェクトを返すクラスプロパティ
class Foo:
def __init__(self, x):
self._x = x
def getx(): return self._x
def setx(y): self._x = y
self.x = property(fget=getx, fset=setx)
しかし、私が手:
>>> f = Foo(42)
>>> f.x
<property object at 0x0000000>
>>> f._x
42
>>> f.x = 1
>>> f.x
1
これを解決する方法はありますか?
編集:
私は、私はあまりを残している可能性を感じるので、ここで私が実際に到達しようとしていますものです。私はconfig
と呼ばれるクラス変数を持つクラスを持っています。これには、プロパティとして設定する設定値が含まれています。
class _Base:
config =()
def __init__(self, obj, **kwargs):
self._obj = obj()
for kwarg in kwargs:
# Whatever magic happens here to make these properties
# Sample implementation
class Bar(_Base):
config = (
"x",
"y"
)
def __init__(self, obj, x, y):
super().__init__(obj, x=x, y=y)
今操作を可能にする:
>>> b = Bar(x=3, y=4)
>>> b.x
3
>>> # Etc.
私は_Base
をたくさんサブクラス化する必要があるので、私はできるだけDRYこれを維持しようとしているクラスがconfig
変数を実装するためにサブクラス化する必要があります。
あなたはクラスにそれを設定していません。オブジェクトに設定しています。記述子はそのようには機能しません。 –