0
我讀過類似的問題,但找不到答案。從Python的內部類訪問外部類對象3
這個問題是不是約訪問外部類的實例或它的方法,但有關訪問外類對象,應該是正常的任務。只要我們有__qualname__
包含有關外部類名稱的信息,就沒有理由不能動態訪問外部類對象。
這個例子做的工作:
class Outer:
class Inner:
@classmethod
def parent_class(cls):
outer_name = cls.__qualname__.split('.')[-2]
outer_cls = globals()[outer_name]
print(outer_cls)
Outer.Inner.parent_class() # <class '__main__.Outer'>
,但它不會在parent_class
功能放置在另一模塊的工作:
# some.py
class Some:
@classmethod
def parent_class(cls):
outer_name = cls.__qualname__.split('.')[-2]
outer_cls = globals()[outer_name]
print(outer_cls)
# main.py
from some import Some
class Outer:
class Inner(Some):
pass
Outer.Inner.parent_class() # KeyError: 'Outer'
我認爲它可以與外部的類裝飾被解決了追加它類對象的所有嵌套類,但是有沒有「乾淨」的方式來獲得外部類對象?