繁体   English   中英

导入模块时创建Python类

[英]Python class is created when module is imported

我有一个这样编写的Python模块。

SomeClasses.py
class A():
    def __init__(self):
        print "Hi! A is instantiated!"

class B():
    def __init__(self):
        print "Hi! B is instantiated!"


a = A()

导入文件后,将自动实例化A类。

>>> import a
Hi! A is instantiated!

现在,大多数时候,这正是我想要的行为。 但是,有时由于开销,我不希望在导入期间立即创建整个类。 我确实考虑过创建一个init()函数。

>>> import SomeClasses
>>> SomeClasses.init()
Hi! A is instantiated!

但是,这将破坏大多数现有代码。 我想避免重写很多现有的代码库。 有人可以建议一种在导入时告诉模块不创建类的方法吗?

顺便说一句,我正在Windows 7上运行Python 2.7。

您可以重构SomeClasses并将其大部分移到另一个模块中:

# SomeClasses.py

# One of the few legitimate uses of import * outside of an interactive session.
from _SomeClasses import *
a = A()

# _SomeClasses.py
class A(object):
    def __init__(self):
        print "Hi! A is instantiated!"

class B(object):
    def __init__(self):
        print "Hi! B is instantiated!"

然后,如果你不想昂贵的初始化a ,导入_SomeClasses并使用该模块。 依赖于其他的代码a现有的导入将SomeClasses ,并得到自动创建a实例。

暂无
暂无

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

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