Этот простой класс, я просто хочу, чтобы проверить функцию о __get__()
Код является:Смущает питона дескрипторы и __get __()
class Des(object):
def __init__(self,num):
self.num = num
def __get__(self, obj, typ = None):
return self.num
class A(object):
des = Des(1)
print 'the des in class is ',des
a = A()
print 'the des in object is ',a.des
print a.__dict__
print A.__dict__
выход:
the des in class is <Des object at 0x7f5fb550ded0>
the des in object is 1
{}
{'__dict__': <attribute '__dict__' of 'A' objects>, '__module__': '__builtin__', 'des': <Des object at 0x7f5fb550ded0>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}
мой вопрос почему причины выходов des
равны des
(один - 1 type(int)
, один - объект type(Des)
). И выход a.__dict__
и A.__dict
также отличается. Какова функция __get__()
и как ее использовать.
Откуда у вас возникла мысль, что '__get__' имеет какое-либо отношение к атрибутам и' __dict__'? Он является частью протокола * дескриптора *; методы и свойства связывания. –
Насколько вы уже разбираетесь в дескрипторах? Является ли мой [ответ на объекты 'property' (https://stackoverflow.com/questions/17330160/how-does-the-property-decorator-work/17330273#17330273) вообще здесь? –
и, возможно, [Дескрипторы и прямой доступ: ссылка Python] (https://stackoverflow.com/q/19409373) также актуальны. –