方法没有重载
在其他语言中,可以定义多个可以重名的方法,只要保证方法名唯一即可。方法名包含三个部分:方法名,参数数量,参数方法。
python中,方法的参数没有生命类型(调用时确定参数的类型),参数的数量也可以由可变参数控制。因此,没有方法重载。如果在类体中定义了多个重名的方法,只要最后一个方法有效。
方法的动态性
私有属性和私有方法(实现封装)
Python对于类的成员没有严格的访问限制,这与其他面向对象语言有区别。关于私有属性和私有方法,有如下要点:
1.两个下划线开头的属性是私有的,其他为公共的。
2.类内部可访问私有属性(方法)
3.类外部不能直接访问私有属性(方法)
4.类外部可以通过“__类名__私有属性(方法名)”访问私有属性(方法)
@property装饰器
@property可以将一个方法的调用方式变为“属性调用”。
面向对象三大特征介绍
1封装
2继承
3多态
python支持多重继承,一个子类可以继承多个父类。继承的语法格式为:
class 子类类名(父类1[,父类2,…]):
类体
如果类定义中没有指定父类,则默认父类是object类。也就是说,object是所有类的父类,里面定义了一些所有类共有的默认实现,比如:new()
子类继承父类所有属性和方法,但是私有属性不能直接访问
类成员的继承和重写
1.成员继承:子类继承了父类构造方法之外的所有成员
2.方法重写:子类可以重新定义父类中的方法,这样就会覆盖父类的方法,也成为“重写”
object根类
object类是所有类的父亲,故所有的类都是object类的属性和方法。
dir()查看对象属性
重写__str__()方法
str()用于返回一个对象的描述,对应于内置函数str(),经常使用print()方法,查看对象的信息。str()可以重写
多重继承
python支持多继承,如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将“从左到右”按顺序搜索。
MRO():方法解析顺序。通过mor()方法获得类的层次结构
多态
多态是指同一个方法调用由于调用对象不同可能会产生不同的行为。在现实生活中,我们有很多例子,比如休息方式,张三的休息是睡觉,李四的休息是玩游戏,高琪老师是敲代码。
关于多态要注意以下几点
1.多态是方法的多态,属性没有多态
2.多态的存在有两个必要条件:继承和方法重写
特殊方法和运算符重载
特殊属性
python对象包含了很多双下划线开始和结束的属性,这些是特殊属性,有特殊用法。