Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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_Class_Object - Fatal编程技术网

Python类作为对象

Python类作为对象,python,class,object,Python,Class,Object,我想知道下面的类是在定义时变成对象,还是在实例化时变成对象 class BlaBlaCar(object): def __init__(self): pass def bla(self): pass blabla = BlaBlaCar() 所以,布拉布拉是一个物体。问题是:Blacar类也是一个对象吗?所以当我不调用它时,它本身就是一个对象?当定义为“类Blacar(对象)”时,它是否作为对象存在于内存中 编辑: 我很清楚,当我这样做时: 打

我想知道下面的类是在定义时变成对象,还是在实例化时变成对象

class BlaBlaCar(object):
    def __init__(self):
        pass
    def bla(self):
        pass

blabla = BlaBlaCar()
所以,布拉布拉是一个物体。问题是:Blacar类也是一个对象吗?所以当我不调用它时,它本身就是一个对象?当定义为“类Blacar(对象)”时,它是否作为对象存在于内存中

编辑: 我很清楚,当我这样做时:

打印(blacar()),然后实例化类对象


问题是,当我创建类主体定义时,我要创建对象吗

我同意@jornsharpe的评论,我认为你可以找到你需要的所有信息。Python中的几乎所有东西都是对象。我也查了一些这方面的参考资料

据说:

类定义语法 类定义的最简单形式如下所示:


正如其他地方指出的,Python中的几乎所有东西都是对象。 但是,我觉得你的问题

问题是,当我创建类主体定义时,我要创建对象吗

尚未直接解决

当Python执行类的定义时,会创建一个对象。但值得注意的是

  • 创建的对象(类本身)是
    类型的实例
  • 此时未创建类的实例(在您的示例中为
    BlaBlaCar

  • 首先,为了消除任何疑问,类定义确实为您提供了一个表示类本身的对象(而不是实例):

    所以你可以看到,
    blacar
    是内存中的一个对象

    您会问,“创建类对象的目的是什么?”

    类定义通常在模块中(或者在上面的示例中,在当前名称空间中,即
    \uuuuu main\uuuu
    )。执行此模块时,将创建一个模块对象。作为模块执行的一部分,执行的任何类定义都将产生一个类对象,然后该类对象将绑定到模块命名空间中的类名

    因此,在某种意义上,可以说类对象“在”模块的命名空间中。但实际上,您可以问一个类似的问题,“模块对象创建到哪里?”,在这一点上,答案只是解释器创建了对象,并且有一个或多个对它的引用,就像您创建的任何其他对象一样


    一个微妙之处是垃圾收集器将收集任何没有引用的对象。对于类对象,周围的模块在其名称空间中有它。就模块本身而言,总是有一个来自
    sys.modules
    等位置的引用

    是的,类对象也是一个对象。Python中几乎所有的东西都是一个对象——类、实例、函数、模块……不完全是重复的,但与之类似:。谷歌的东西<代码>打印(blabla);打印(BlaBlaCar)
    这是病毒广告吗?你们班的名字很明显
    class ClassName:
        <statement-1>
         .
         .
         .
        <statement-N>
    
    blabla = BlaBlaCar()
    
    >>> class BlaBlaCar(object):
    ...     pass
    ...
    >>> id(BlaBlaCar) 
    57088312L