Python - есть ли какой-нибудь способ доступа из метода к классу, к которому он привязан? - PullRequest
0 голосов
/ 03 апреля 2019

В Python, если я определяю метод внутри класса, я могу получить доступ к содержащему классу, используя __class__:

>>> class A:
...     def f(self):
...         print(__class__)
... 
>>> class B(A):
...     pass
... 
>>> B().f()
<class '__main__.A'>

Однако, если я определяю метод вне класса, а затем присоединяю его ккласс __class__ недоступен:

>>> class A:
...     pass
... 
>>> def f(self):
...     print(__class__)
... 
>>> A.f = f
>>> class B(A): 
...     pass
... 
>>> B().f()
NameError: name '__class__' is not defined

В этом втором сценарии существует ли какой-либо способ доступа из f к классу A, к которому он присоединен?

1 Ответ

1 голос
/ 03 апреля 2019

Значения, полученные из атрибутов, не помнят, откуда они пришли. Вы не можете получить класс из метода, который вы добавили после определения класса.

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