@leonidpetrosian

Зачем присваивать переменную класса самой себе?

Добрый день, хабравчане!

В последнее время просматриваю разные библиотеки и во многих встречаю данное:
class Foo:
    boo = dict
    def __init__(self):
        self.boo = self.boo

Объясните нерадивому данную структуру. Пример может быть отстранённый от реальности.
Реальный пример данной реализации: https://github.com/networkx/networkx/blob/master/n...

Заранее спасибо
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
@deliro
Как вариант, потому что boo — это поле класса. В строке self.boo = self.boo происходит присваивание поля экземпляру. Не знаю, зачем это может быть нужно на практике, но вот пример для воспроизведения, когда это на что-то влияет:

class A:
    factory = dict
    
    def method(self):
        return self.factory()
    
    
a = A()
A.factory = list
print(a.method())  # []


class B:
    factory = dict
    
    def __init__(self):
        self.factory = self.factory
    
    def method(self):
        return self.factory()
    
    
b = B()
B.factory = list
print(b.method())  # всё равно словарь: {}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Зачем присваивать переменную класса самой себе?

В этом смысла нет.
Смысл есть, если это не просто переменная, а свойство. Когда при присваивании может выполняться определённый код.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы