![](/img/trans.png)
[英]When importing from a python module is it a class that gets imported or a function?
[英]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.