1.第一个python类(创建类)
创建类之前需要先设计类
类名:见名知意,首字母大写,其他遵循驼峰原则
属性:见名知意,遵循驼峰原则
行为(方法/功能):见名知意,遵循驼峰原则
类名:Car
属性:color、type
行为:run
类名:person
属性:height、weight、age、name
行为:eat、run
设计好之后创建类
类:是一种数据类型,本身并不占内存空间,跟所学过的number、string、boolean等类似。用类创建实例化对象(变量),对象占内存空间
格式:
class 类名(父类列表):
(空格)属性
(空格)行为
2.使用类实例化对象
格式:
对象名=类名(参数列表)
注意:没有参数,小括号也不能省略
3.访问对象的属性与方法
访问对象的属性:
格式:对象名.属性名
赋值:对象名.属性名=新值
访问方法:
格式:对象名.方法名(参数列表)
4.对象的初始状态(构造函数)
构造函数:init()在使用类创建对象时自动调用
注意:如果不显示的写出构造函数,默认会自动添加一个空的构造函数
5.self
(self不是关键字,换成其他标识符也是可以的,但是一般都使用self)
- self代表类的实例而非类
- 哪个对象调用方法,那么该方法中的self就代表哪个对象
- self.class 代表类名
6.析构函数
析构函数:del() 释放对象时自动调用
在函数里定义的对象在函数结束时自动释放,这样可以用来减少内存空间的浪费
7.重写__repr__与__str__函数
重写:将函数重新定义写一遍
str():在调用print打印对象时自动调用,是给用户用的,是一个描述对象的方法
repr():是给机器用的,在python解释器里边直接敲对象名在回车后调用的方法
注意:在没有__str__且有__repe__时,str=repr
优点:当一个对象的属性值很多,而且都需要打印时,重写了__str__方法后简化了代码
8.访问限制
如果要让内部的属性不被外部直接访问,就在属性前加两个下划线(__)。在python中如果在属性前加两个下划线,那么这个属性就变成了私有属性
当直接访问money时会报错是因为python解释器把__money变成了_Person__money,仍然可以用_Person__money去访问,但是一般不建议使用。不同的解释器可能存在的解释变量名不一致
在python中__XXX__属于特殊变量,可以直接访问
在python中,_XX 变量,这样的实例变量外部是可以访问的,但是按照约定的规则,当我们看到这样的变量时,意思是“虽然我可以被访问,但是请把我视为私有变量,不要直接访问我”
9.继承
继承:假设有两个类,A类和B类,当我们说A类继承自B类的时候,那么A类就拥有了B类中的所有属性和方法
注意:继承者称为子类,被继承者称为父类
继承的作用(优点):
(1)简化了代码,减少了冗余
(2)提高了代码的健壮性
(3)提高了代码的安全性
(4)是多态的前提
缺点:
耦合与内聚是描述类与类之间的关系的,耦合性越低,内聚性越高代码越好,但是继承的耦合性较高
单继承的实现
父类:Person
子类:Student和Worker
实现:
子类可以有一些独立的属性(例如学生的学号)