如何通过专门导入来在类中执行Python代码

问题描述 投票:0回答:1

如何导入特定的类并通过导入来执行其中的代码?

假设我有

x.py

class classY:
    print('Executed class Y!')

class classZ:
    print('Executed class Z!')

当我仅从另一个文件导入该模块时,我希望执行语句

print('Executed function Y!')

例如,当我执行命令

from x import classY
时,我希望控制台中的输出为:

>>>from x import classY
Executed class Y!
>>>

目前,在相同的条件下执行相同的命令会导致打印两个字符串。

我怎样才能实现这个目标?

python python-import
1个回答
0
投票

您可以使用模块级别

__getattr__
来完成此操作(请参阅PEP-562)。这需要重命名您的类或将它们放置在命名空间或单独的模块中,以确保调用
__getattr__

class Namespace:

    class A:
        ...


    class B:
        ...


def __getattr__(name):
    cls = getattr(Namespace, name)
    if cls is not None:
        print(f"Imported class {cls.__name__}")
        return cls
    raise AttributeError(f"{name} invalid")
© www.soinside.com 2019 - 2024. All rights reserved.