在类和函数上编写一些代码时,我采用了函数和具有相同名称的类的情况
代码执行为:
$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
答案 0 :(得分:6)
在定义类时执行类的主体。因此,当python加载文件时,以下总是打印2136
:
class DEF:
a=2136
print a
Python必须创建一个名为DEF
的类定义,为此,它执行类的主体,就像它是一个函数一样。然后,该函数的本地名称将形成类主体。
无论您使用其他功能替换名称,都会发生这种情况。它也只运行一次;如果在未再次执行顶级代码之前导入了模块。
答案 1 :(得分:0)
如果您的问题恰好是执行print a
的原因,那么python是一种解析语言,这意味着执行了类定义代码,因此在编写时会调用任何函数。当您调用print a
但实际上解释器首先解析脚本时,不会调用DEF()
。