내 질문은 바인딩 된 메서드 개체와 관련이 있습니다. 특히 함수 (본질적으로 설명자)와 동일한 동작을 모방하려고합니다. 설명자를 사용하여 바인딩 된 메서드 구현
나를 먼저 여기 class_instance.function은()type(dfunc)
이 x는 클래스 인스턴스의 경우는 기능과
type(d).__dict__['dfunc'].__get__(d, type(d))
인 경우
Class D(object):
def dfunc(self):
...
d=D()
d.dfunc() # will call D.__dict__['dfunc'].__get__(d,D)()
#gives a bound method which can be used directly
a=D.__dict__['dfunc'].__get__(d,D)
a() #works as d.D()
합니까 파이썬 전화 D.__dict__['dfunc'] (d)
을, 어떻게 작동하는지에 대한 이해를 넣어 보자?
지금은 사용 폐쇄 바운드 개체를 만들려고하고 있어요 방법에 오는 : 이제
class E(object):
def __get__(self,obj,cls):
def returned(*args):
print(obj.__dict__)
return returned
class F(object):
e=E()
y=9
f=F()
f.fvar=9 #putting something in instances __dict__
a=f.e #will call the __get__ function of F and return a closure
a() #works and produces instance specific result -> {'fvar': 9}, just like a bound method
내가 a=D.__dict__['dfunc'].__get__(d,D)
유형 (A)가 결합 된 방법을했던 주요 질문 ,하지만 난 그것을 type(a)
를 구현할 때 기능입니다; 거기에 바인딩 된 개체를 사용자 정의 설명자에서 반환하는 방법은 무엇입니까?
설명자와 같은 기능을 구현하는 더 좋은 방법이 있습니까? 내 머리 속에서 근본적으로 잘못된 것이 있다면 나에게 맞게 수정하십시오. 대신 방법을 반환하려면
변경 내용을 사용하여 fe (f는 속성으로 e를 갖는 F 클래스의 인스턴스이고 e는 E의 인스턴스 임), 오류 TypeError : 메소드가 2 개의 예상 인수를 가지며 3을가집니다. –
저에게 효과적입니다. . – BrenBarn
나는 Python3.3을 사용하고있다. 이유가 될 수있다. –