概要:
类只负责封装,定义,描述行为,尽量不要再类内部调用内部方法
方法函数区别:
方法:强调涉及
函数:类里的方法
数据成员:类里面的变量
类 - 行为,特征
构造函数, 构造函数 只能返回None
注意类变量 实例变量区别, 如果与对象相关,则应该使用self.xxx, 所以此处的name/age 定义在类变量里并不合适!
Python中实例变量找不到时会向上级的类变量中找,如果再找不到 会像父类里找
打印类变量:因为没有定义实例变量, 所以通过__dict__打印出为空字典
下图则定义了实例变量, 通过__dict__可以查看到 该类中的实例变量不为空了
理解self:
实例方法, 代表了实例(只与对象相关)
访问类变量的方法:
类方法:通过类调用,一般为与类相关的方法, 如sum 等
静态方法 ,不需要传入特定参数 , 类似普通的函数, 类方法,与类无关, 少用
私有方法:
只在方法前面加__
如果在方法前后都加下划线 不认为是似有方法
私有变量:
此处虽然在line15行调用了st1.__score 并赋值为-3,但是 实际是创建了一个新的student对象里的变量 而不是原来的 line7中的__score, 看output 可以看出来。 其实python中并不存在私有变量, 通过__dict__可以看出 python 将定义的私有变量__score 转换成为了_Student__score, 所以如果通过实例名._Student_score还是可以访问到的。不过我们不会可以去更改。
继承:
需要import 父类,
在调用父类时,需要加入self 这个参数, 因为类调用是列方法, 父类并不知道 对象是什么, 所以不推荐
正确的继承方法如下 , 另外, Human中要加入object这个经典类, 否则会报错,如下图cmd 94中的错误