Python 2.7 OOP:模块导入时初始化内部类是否可行?
在Python 2.7中通过模块级代码初始化类当然可行!
完全没问题!Python的模块有个核心特性:模块级别的代码会在模块第一次被导入时自动执行,所以你完全可以用这种方式来初始化模块内的类属性、执行类方法。
你给出的示例代码就是非常标准且有效的实现方式:
class DoSomething(object): foo = 0 bar = 0 @classmethod def set_all_to_five(cls): cls.bar = 5 cls.foo = 5 @classmethod def set_all_to_ten(cls): cls.bar = 10 cls.foo = 10 # 模块级代码 - 导入DoSomething类时自动触发 DoSomething.set_all_to_five()
当你完成导入后,类的属性已经被提前初始化好了,直接使用即可:
>>> from productX.moduleY import DoSomething >>> print DoSomething.foo 5 >>> print DoSomething.bar 5
小细节提醒:
- 模块级代码只会执行一次:Python会缓存已导入的模块,哪怕你在代码不同位置多次导入同一个模块,初始化逻辑也不会重复运行,这通常是符合日常开发需求的。
- 如果你需要更灵活的初始化逻辑(比如根据导入场景动态调整参数),可以把初始化逻辑封装成独立函数,在模块末尾调用;但你的这种直接执行类方法的方式,对于固定规则的初始化来说,已经足够简洁高效。
内容的提问来源于stack exchange,提问作者RaamEE
相关产品推荐
相关产品推荐

