类和函数在Python
虽然写在类和函数的一些代码,我花了类和函数在Python
代码执行的一个功能的情况下,用相同名称的类:
$python test.py
要做到这一点我尝试两种情况:
-
我第一次写他们在一个文件test.py了,得到了调用该函数而不是类
class ABC: def __init__(self): a=3 print a def ABC(): b=7 print b if __name__=='__main__': ABC()
输出:
7
-
我在一个文件test.py和类在另一个文件同名的和进口它。当写的功能我没有写
__init__
功能,这两个功能以及该类得到执行,而当我写了__init__
功能,只有功能得到了执行-
没有
__init__
功能-
hello.py:
class DEF: a=2136 print a
-
test.py:
from hello import DEF def DEF(): b=7 print b if __name__=='__main__': DEF()
输出:
2136 7
-
-
与
__init__
函数定义-
hello.py:
class DEF: def __init__(self): a=2136 print a
-
test.py
from hello import DEF def DEF(): b=7 print b if __name__=='main': DEF()
输出:
7
-
-
类的主体在定义类时执行。因此,下面总是打印2136
当Python加载文件:
class DEF:
a=2136
print a
Python有创建一个名为DEF
类的定义,要做到这一点它执行类的身体就好像它是一个功能。该函数的本地名称就构成了类的主体。
发生这种情况无论你用另一个函数替换名称。它也只运行一次;如果在顶层代码再次执行之前导入了模块。
感谢Martjin,那很有用。 – animesh 2013-05-02 14:34:18
如果你的问题碰巧是为什么print a
被执行,python是一个解析语言,这意味着类定义代码被执行,因此任何函数在写入时都会被调用。当您拨打DEF()
时,print a
未被调用,但实际上在解释器首先解析脚本时调用。
你可以在类定义中加入一个'return'调用来测试。你的代码将会停止执行,因为它在解析DEF定义时会执行'return' – Meoiswa 2013-05-02 14:23:53
问题是? – Meoiswa 2013-05-02 14:16:40
@Meoiswa“为什么?” – Paul 2013-05-02 14:20:14
因为我读了你的“问题”,但不仅我不能确定你的疑问,我甚至看不到一个“?” – Meoiswa 2013-05-02 14:21:45