を設定していないコードです:Pythonのプロパティは、ここで
{'doc': 'As name', 'fset': <function fset at 0x10b68e578>, 'fdel': None, 'fget': <function fget at 0x10b68ec08>}
John
John
Bob
John
コードfrom here取られる:上記
def Property(func):
return property(**func())
class A:
def __init__(self, name):
self._name = name
@Property
def name():
doc = 'A''s name'
def fget(self):
return self._name
def fset(self, val):
self._name = val
fdel = None
print locals()
return locals()
a = A('John')
print a.name
print a._name
a.name = 'Bob'
print a.name
print a._name
は、次の出力が生成されます。
質問:何が問題なのですか?それは単純なものでなければなりませんが、私はそれを見つけることができません。
注:私は複雑な取得/設定のためにプロパティを必要とします。単純に属性を隠すのではありません。
ありがとうございます。
あなたはfset'は、 'name'の代わりに' _name'で設定していない 'という100%の確信はあり?簡単な間違いをして、あなたの症状を説明します。 –
@MartijnPieters 99.9%このコードで生成されたコードと出力をコピーしました=) – tonytony
@property defを使うのではなく、プロパティを定義するこの奇妙な方法名前(...): "docstr" \ n getter'、 '@name.setter def name(...):setter'? – delnan