我运行以下代码,运行正常。
class A:
def __init__(self):
pass
class B:
z = A()
def __init__(self):
pass
if __name__ == '__main__':
pass
但当我将“A级”放在“B级”后面时,如下所示:
class B:
z = A()
def __init__(self):
pass
class A:
def __init__(self):
pass
if __name__ == '__main__':
pass
我在PyCharm中运行它,它报告Traceback如下:
Traceback (most recent call last):
File "D:/PythonStudy/AB.py", line 4, in <module>
class B:
File "D:/PythonStudy/AB.py", line 5, in B
z = A()
NameError: name 'A' is not defined
我很困惑为什么“A级”没有定义?
答案 0 :(得分:0)
只有在您访问它的点定义了类,函数或任何变量类型时,才能访问它们。在尝试访问它之前总是定义任何东西。
如果你编写一个执行类似功能的函数,例如:,你可能会感到困惑def a():
return l * 2
l=6
b=a()
并且它可以正常工作,但是如果您尝试使用shell:
>>> class a:
print('hi')
你会得到:
hi
>>>
在创建实例之前。 这是因为当您在python中定义一个类时,代码会立即运行,并且函数的代码仅在被调用时运行。