Метод Dunder или magi c для возврата типа () объекта - PullRequest
1 голос
/ 14 июля 2020

Существуют функции dunder или magi c для многих вещей, например, чтобы получить len(), print(), мы даже можем использовать help(), даже не используя функцию magi c, и использовать ?Class, если мы использовали правильную строку документации.

Предположим, у меня есть такой класс:

class Node():
    def __init__(self, data):
        self.data = data
        self.next = None
    
    def __repr__(self):
        pass
    
    def __str__(self):
        pass
    
    def __len__(self):
        pass
        
node = Node([1,2,3])
type(node)

Когда я использовал type(), он сказал __main__Node. Какой метод magi c я должен использовать, чтобы вернуть что-то вроде LinkedList.Node или просто Node ?? Так же, как он возвращает list, str или numpy.ndarray ??

1 Ответ

3 голосов
/ 14 июля 2020

type() не вызывает никаких методов magi c. Он просто возвращает значение атрибута instance.__class__.

Перезапись вручную не всегда является хорошей идеей. Если вы хотите LinkedList.Node вместо __main__Node, лучше всего определить Node внутри модуля LinkedList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...