为什么类定义影响代码运行?

时间:2017-10-25 02:07:16

标签: python-3.x

我运行以下代码,运行正常。

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级”没有定义?

1 个答案:

答案 0 :(得分:0)

只有在您访问它的点定义了类,函数或任何变量类型时,才能访问它们。在尝试访问它之前总是定义任何东西。

如果你编写一个执行类似功能的函数,例如:

,你可能会感到困惑
def a():
    return l * 2

l=6
b=a()

并且它可以正常工作,但是如果您尝试使用shell:

>>> class a:
       print('hi')

你会得到:

hi
>>>
在创建实例之前

。 这是因为当您在python中定义一个类时,代码会立即运行,并且函数的代码仅在被调用时运行。