繁体   English   中英

获取 class 的名称,另一个 class 在 Python 内部实例化

[英]Get name of class another class is instantiated inside of in Python

是否有可能在另一个 class 中获得 python class 的名称,该名称在第一个 ZA2F2ED4F8EBC2CBB1C21A29DZ 内部实例化

让我给你举个例子。

class SubClass:
    top_level_name = None # name class it is instantiated in e.g. TopLevelClass

class TopLevelClass:
    subclass = SubClass()

我知道我可以写以下...

class SubClass:
    def __init__(self, class_name):
        self.top_level_name = class_name

class TopLevelClass:
    subclass = SubClass(class_name)

    def __init__(self):
        self.class_name = self.__class__.__name__

但是,在初始化 class 时,无需将 class 名称作为参数传递就可以了。

这可能吗,只是一厢情愿,或者出于某种我还没有想到的原因,这是一个非常糟糕的主意。

我建议重新审视这两个类的设计。 让实例化的 class 意识到调用 class 违反了封装和抽象的设计原则。 它还创建了一个循环依赖项(在这种情况下,只有一个逻辑依赖项,因为只有 class 的名称是已知的)。 如果您使用 class 名称作为实例化 class 的某种标识符,则可以像在示例中一样在构造函数中传递 id 字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM