Доступ к Python, содержащему классы или объекты - PullRequest
1 голос
/ 17 сентября 2011

Как получить доступ к вызывающему / внешнему / контейнерному классу Python внутри текущего класса при добавлении в качестве свойства. Рассмотрим этот пример ...

class a():
    @staticmethod
    def meth():
        print 'Who called me?'

class b():
    my_a = a

class c():
    my_a = a

b.my_a.meth()
>> Who called me?

c.my_a.meth()
>> Who called me?

Таким образом, вопрос в этом примере заключается в том, как узнать в a.meth (), вызывается ли он из класса b или из класса a ?

Вышесказанное - это, очевидно, статические классы и методы. Будет ли решение вышеупомянутого применяться и к содержащим объектам?

1 Ответ

0 голосов
/ 17 сентября 2011

Нет хорошего способа узнать, как была вызвана функция meth (). К тому времени, когда это вызывается, это просто функция. Если вместо этого вы используете @classmethod, вы, по крайней мере, передадите вам класс, но в этом случае они оба будут одинаковыми a, поэтому я не уверен, что вы получите то, что хотите.

Для получения необходимой информации вам, вероятно, потребуется еще немного бухгалтерии.

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