python中关于__new__和__init__的个人理解

先看段代码: 

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__函数去初始化它。

 

已标记关键词 清除标记
相关推荐