1
私のクラス属性にの名前を使用しようとしていますが、それは不可能です。 ここのコードです:インスタンス属性を使用してクラス属性を定義する方法は?
class B:
def __init__(self, val):
self.val = val
def __get__(self, instance, owner):
return owner.valEditNew(self.val)
def __set__(self, instance, value):
return
class A:
def __init__(self, name = 'def_name'):
self.name = name
attr = B('G120')
def valEditNew(val):
val += ' @edited'
return val
a = A('JJ')
print(a.attr)
それができない場合、私はG120
>>> builtins.NameError: name 'self' is not defined
の代わりにself.name名前または...を使用している場合、それだと、あなたは私の道を示すことができますが?
を...どこすることができます私は元のものを見つける? –
@ shiyonsufa、https://docs.python.org/3/howto/descriptor.htmlまたはhttps://docs.python.org/3/reference/datamodel.html#descriptors – falsetru
@shiyonsufaを読むことをお勧めします。 Bはどんなクラスのサブクラスでもないが、 '__get__'、' __set__'を持たない 'object';オーバーライドは行われません。対話的なシェルで 'object .__ get__'を試してみてください。 – falsetru