先看段代码:
class Student:
def __new__(cls, name):
print(cls)
return super().__new__(cls)
def __init__(self, name):
self.name = name
s = Student("Rui")
print(s.name)
运行结果:
<class '__main__.Student'>
Rui
看到了什么?
1,cls表示的是本文件定义的Student类;
2,super()表示父类,因为python里面一切类的基类都是object,事实上是调用了object类的__new__函数来构造一个cls类,即Student类。
3,self是什么呢?就是__new__函数的返回值,返回出来一个Student类的对象,然后__init__函数去初始化它。