类声明语句会导致在python中分配内存?

时间:2019-07-01 07:21:56

标签: python class

我知道在像c ++这样的语言中,直到instantiation才分配内存。 python是否一样?
我正在读How to think like a computer scientist课程。在该过程中,为了详细说明此片段,给出了一个奇怪的数字:

class Point:
    """ Point class for representing and manipulating x,y coordinates. """

    def __init__(self):
        """ Create a new point at the origin """
        self.x = 0
        self.y = 0

p = Point()         # Instantiate an object of type Point
q = Point()         # and make a second point

print("Nothing seems to have happened with the points")

此图给出: enter image description here

我从图中得到的是,在执行通过声明类的行之后,分配了一些内存(在到达实例化部分之前)!但是没有明确提到这种行为。 我对吗?这是怎么回事?

1 个答案:

答案 0 :(得分:3)

Python中的所有内容都是一个对象,包括类,函数和模块。 classdefimport语句都是可执行语句,并且对于较低级别的API都是语法糖。对于类而言,它们实际上是type类的实例,并且:

class Foo(object):
    def __init__(self):
        self.bar = 42

仅是此操作的快捷方式:

def __init__(self):
    self.bar = 42

Foo = type("Foo", [object], {"__init__": __init__}) 

del __init__ # clean up the current namespace

因此,正如您所看到的,在这一点上确实存在实例化。