我知道在像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")
我从图中得到的是,在执行通过声明类的行之后,分配了一些内存(在到达实例化部分之前)!但是没有明确提到这种行为。 我对吗?这是怎么回事?
答案 0 :(得分:3)
Python中的所有内容都是一个对象,包括类,函数和模块。 class
,def
和import
语句都是可执行语句,并且对于较低级别的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
因此,正如您所看到的,在这一点上确实存在实例化。