self代表类的实例,而非类。
-
self只必须存在于类的函数中,普通函数是不需要带self的,在调用时,不需要为self参数赋值。Self代表的是类的实例对象(注意不是类本身),self可以用其他名称来代替,但是约定最好是self
-
self的原理
创建一个类Test(),实例化该类t=Test()得到t这个对象,调用这个对象的方法t.fun(x,y),调用过程中,python会自动转为Test.fun(t,x,y)
使用场景:
类方法:方法中只使用了类对象(操作类属性/调用其他类方法)
实例对象:方法中使用了实例对象(操作实例属性/调用其他实例方法)
静态方法:方法中既不使用类对象,也不使用实例对象)
实例对象和类属性:
1.实例对象也可以获取类属性(类属性可以被该类的所有对象共有)
2.实例对象不能修改类属性
鸭子类型:长得像鸭子即可(动态语言(python/js/php)中没有类型约束,只要实现了对应的功能,都可以执行