Получение атрибута владельца атрибута

1

Существует ли ссылка от атрибута к держателю атрибута? Вот пример, что я имею в виду:

class classA(object):
    def __init__(self):
        pass

class classB(object):
    def __init__(self):
        self.a=classA()

    def methodB(self):
        print "ClassB-s methodB called"

b=classB()
a=b.a

Можно ли ссылаться на b из a? Мне нравится называть методB от a.

Теги:

1 ответ

1
Лучший ответ

Нет, не совсем.

Когда вы инициализируете ba, он становится ссылкой на объект classA:

>>> b.a
<__main__.classA object at 0x7feeb904df10>

Чтобы вызвать метод, вы можете передать родительский объект classA:

>>> class classA(object):
...    def __init__(self, parent):
...        self.parent = parent
...    
...    def method(self):
...        self.parent.methodB()
...
>>>
>>> class classB(object):
...    def __init__(self):
...        self.a=classA(self)
...
...    def methodB(self):
...        print "ClassB-s methodB called"
...
>>> b = classB()
>>> a = b.a
>>> a.method()
ClassB-s methodB called

Оттуда у вас есть доступ ко всему родителю.

  • 0
    Таким образом, нет другого пути, затем передать родительский экземпляр в конструктор класса A?
  • 0
    Нет, не совсем.

Ещё вопросы

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