Как обратиться к переменным экземпляра, которые являются объектами, в Python?

1

Обычно, чтобы ссылаться на переменную экземпляра, имя переменной должно предшествовать self, например,

class A:
    def __init__(self, x: int):
        self.x = x

    def print_x(self):
        print(self.x)

Однако я заметил, что если переменная экземпляра является объектом, это необязательно. То есть, я могу сделать,

class B:
    pass


class A:
    def __init__(self, b: B):
        pass

    def print_b(self):
        print(b)


b = B()
a = A(b)
a.print_b()

и вызов print_b из объекта A будет печатать адрес памяти объекта B без повышения ошибки.

Является ли это эквивалентом явного объявления b как экземпляра variabe, через self.b = b в __init__ и ссылаясь на b как self.b после этого? И если да, то это правильное соглашение?

Теги:

1 ответ

0

И если да, то это правильное соглашение?

В обеих ситуациях конструкция может страдать от жесткой связи. Общее эмпирическое правило всегда зависит от абстракций, а не от конкреций.
Только если вы делитесь с нами фактическим кодом (MCVE) и предоставляете некоторый контекст, мы могли бы предложить практическое и лучшее решение вашей проблемы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню