Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不创建对象的情况下执行python类的所有语句_Python - Fatal编程技术网

在不创建对象的情况下执行python类的所有语句

在不创建对象的情况下执行python类的所有语句,python,Python,我是python新手,刚刚在一个模块中创建了3个类,即全局范围、函数内部和if块。在运行模块时,所有类的所有语句都在运行。我很惊讶为什么所有的类都是在没有创建任何对象的情况下执行的 class Demo: print('global class Demo') def test(): print('Demo') class Demo: x = 'Demo from fuction test()' print(x) test() if T

我是python新手,刚刚在一个模块中创建了3个类,即全局范围、函数内部和if块。在运行模块时,所有类的所有语句都在运行。我很惊讶为什么所有的类都是在没有创建任何对象的情况下执行的

class Demo:
    print('global class Demo')

def test():
    print('Demo')
    class Demo:
        x = 'Demo from fuction test()'
        print(x)

test()

if True:
    class Demo:
        print('Demo from if:') 
从:

类定义是一个可执行语句

而且

然后在新的执行框架中执行该类的套件(请参见 命名和绑定),使用新创建的本地命名空间和 原始全局命名空间。(通常,该套件包含 函数定义。)当类的套件完成执行时 执行帧被丢弃,但其本地名称空间被保存。[4] A 然后使用基类的继承列表创建类对象 类和为属性字典保存的本地命名空间。 类名在原始本地文件中绑定到此类对象 命名空间

从:

类定义是一个可执行语句

而且

然后在新的执行框架中执行该类的套件(请参见 命名和绑定),使用新创建的本地命名空间和 原始全局命名空间。(通常,该套件包含 函数定义。)当类的套件完成执行时 执行帧被丢弃,但其本地名称空间被保存。[4] A 然后使用基类的继承列表创建类对象 类和为属性字典保存的本地命名空间。 类名在原始本地文件中绑定到此类对象 命名空间


很难说你在问什么,但是定义一个类和创建一个对象是不同的。您需要调用该类来创建一个实例(您正在寻找的对象)


很难说你在问什么,但是定义一个类和创建一个对象是不同的。您需要调用该类来创建一个实例(您正在寻找的对象)


当您编写此表单的代码块时:

class Name:
    <statements>
您可以将其粘贴到类定义中,但它仍然执行相同的操作:

class Name1:
    a = 2
    print(a) # prints 2
但是在类定义结束后,变量
a
被“抓起”,不再具有类定义中的值

a = 1
print(a) # prints 1

class Name2:
    a = 3
    print(a) # prints 3

print(a) # prints 1
print(Name2) # prints <class '__main__.Name2'>

print(Name2.a) # prints 3; this shows where the `a` from the class definition went

它们会保存到以后调用函数时。但是类在这方面与函数不同。

当您编写这种形式的代码块时:

class Name:
    <statements>
您可以将其粘贴到类定义中,但它仍然执行相同的操作:

class Name1:
    a = 2
    print(a) # prints 2
但是在类定义结束后,变量
a
被“抓起”,不再具有类定义中的值

a = 1
print(a) # prints 1

class Name2:
    a = 3
    print(a) # prints 3

print(a) # prints 1
print(Name2) # prints <class '__main__.Name2'>

print(Name2.a) # prints 3; this shows where the `a` from the class definition went

它们会保存到以后调用函数时。但是类在这方面与函数不同。

您只需三次声明类,而无需创建任何对象。你想在这里做什么?你想实现什么?试图理解如何声明和运行类。正如我所知道的,您可以在不同的范围内声明一个类。只需声明三次类,而不创建任何对象。你想在这里做什么?你想实现什么?试图理解如何声明和运行类。正如我所知道的,您可以在不同的范围内声明一个类。这(类定义是一个可执行语句)有助于理解这个概念。谢谢这(类定义是一个可执行语句)有助于理解这个概念。谢谢你是对的,我混淆了函数定义。谢谢Devid.@DJ-如果我的帖子回答了你的问题,我鼓励你通过接受它来表示-点击帖子左侧的绿色复选标记。你是对的,我混淆了函数定义。谢谢Devid.@DJ-如果我的帖子回答了你的问题,我鼓励你通过接受它来表示,点击帖子左侧的绿色复选标记。