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'
我认为它可以与外部的类装饰被解决了追加它类对象的所有嵌套类,但是有没有“干净”的方式来获得外部类对象?