1
내 클래스 속성 인 attr
에 대해 이라는 이름을 사용하려고했지만 불가능한 것처럼 보입니다.인스턴스 속성을 사용하여 클래스 속성을 정의하는 방법은 무엇입니까?
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)
내가 >>> builtins.NameError: name 'self' is not defined
이 가능하지 경우 G120
대신에 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