【发布时间】:2017-02-10 00:08:16
【问题描述】:
考虑文件 my_module.py 中的代码:
class A(object):
def __init__(self, x=er()):
self.x = x
现在,当我导入这个模块时
import my_module
我收到一个错误,
name 'er is not defined
虽然我知道 my_module 没有定义 er,但我从未创建 class A 的实例。因此,令人费解的是,python 在简单地导入模块时会尝试执行__init__ 回调。虽然,__init__ 调用并未完全执行,如下例所示:
class A(object):
def __init__(self, x=5):
self.x = x
print ('I am here')
现在,当我导入模块时 - 没有打印任何内容,这是预期的行为。
我很困惑为什么在我没有实例化class A 的对象时在第一个示例中调用函数er。任何指向解释这一点的文档的指针?
【问题讨论】:
-
无论如何,
x在这里不是作为回调,如果这就是你的意思。你可以有一个参数er,在__init__你可以做self.x = er()
标签: python python-2.7 class python-import