封装:
面向对象的程序设计中,某个类把所需要的数据(也可以说是类的属性)和对数据的操作(也可以说是类的行为)全部都封装在类中,分别称为类的成员变量和方法(或成员函数)。这种把成员变量和成员函数封装在一起的编程特性称为封装。
类的属性
类由属性和方法组成,类的属性是对数据的封装,而类的方法是对类的行为的封装。类的属性按使用范围分为共有属性和私有属性。具体地,在python实现面向对象的编程思想的时候,封装在类中的属性可以分为两种数据类的属性和数据对象的属性(也可以成为数据类的成员变量和属于对象的成员变量),其中,这两种成员变量又各自分为共有成员变量和私有成员变量。
类的成员变量和对象的成员变量
类的成员变量定义在类中,和类的成员函数在同一缩进等级。而对象的成员变量定义在init(self)成员函数中,和init(self)函数下的变量和语句在同一等级。通俗地讲,类的成员变量属于类,共类的所有对象和类本身所共有,也就是说所有的类的对象和类只有一份这样的变量。而对象的成员变量属于类的对象本身,每个对象都有一份,而且各个对象之间互不影响。
公有成员变量和私有成员变量
python中用成员变量的名字来区分是共有成员变量或者是私有成员变量。python中,以两个下划线‘__’开头的变量都是私有成员变量,而其余的变量都属于公有成员变量。其中,私有的成员变量只能在类的内部访问,而共有的公有的成员变量可以在类的外部进行访问。
方法重载:
在一个类型中,出现了相同名称,不同参数的函数/方法,称为方法重载
目的:在执行的过程中,通过参数的不同,来执行不同的代码,实现不同的功能。python中,已经实现了,【可变参数、关键字参数】--【我不需要方法重载了!】python又针对属性访问函数,进行了相同名称函数的定义 —— 伪方法重载
伪方法重载的目的:配合封装,隐藏数据访问方法的底层实现!
公有方法和私有方法
如上面所说,类的方法是对类行为的封装。类的方法也分为公有方法和私有方法。类的私有方法只能通过对象名(在类内部也就是self)在类的内部进行访问,而公有方法可以在类的外部通过对象名进行访问。和属性不同的是,一般意义上的类方法属于对象,也就是说只有通过对象才可以进行调用,不能直接通过类名进行调用。一般类方法的第一个参数必须是代指类对象本身的(一般我们常用self,实际上可以是任何自定义的名字,只不过self是大家约定俗成的用法,在下面介绍的类方法中,大家一般用cls,因为那里更多地标识的是一个类),可以通过self访问类对象的成员函数和数据。
同样,公有的成员函数和私有的成员函数也是通过名字来区分的,双下划线‘__’开头的函数是私有成员函数。