继承 多态(鸭子模型) 函数重启

继承

概念:

如果两个或者两个以上的类具有相同的属性和方法,我们可以抽取出来一个类将共同的部分声明到被抽取的类中。

这个被抽取出来的类我们称之为父类,超类,基类

其他类我们称之为子类/派生类

父类与子类之间的关系我们称之为继承。

注意:当一个子类没有继承其他类的时候,则它默认继承object类,换句话说,object类是一切类的基类。

在python中我们的继承分为单继承与多继承。

单继承:

当一个子类只有一个父类的时候,我们称之为单继承。

class 类名(父类)

​ 类体

注意:若未指明父类的时候,默认继承object类,object类可以省略不写。

继承的特点:

子类可以直接使用父类未私有化属性以及方法,但是父类不能使用子类特有的属性以及方法。

父类私有化的属性与方法,我们不能直接访问,但是我们可以通过它暴露出来的接口进行访问。

若子类拥有特殊的属性的时候,我们需要在子类重写_ _ init _ _ 方法,在子类的init方法中,我们需要将子类拥有的所有的属性都声明(包括父类中的),还需要手动调用父类中的init方法 super()._ _ init _ _/ 类名. _ _ init _ _

当子类中不存在特殊的属性[我们没有重写init方法的时候],这时候系统会自动调用父类中的init方法,不需要我们自己手动调用。

多继承:

当一个子类有多个父类的时候我们称之为多继承。

使用多继承的时候,当两个父类中的属性不相同的时候,默认调用写在继承列表里面最前面的位置的父类的构造函数。

若两个父类中的构造函数我们都想调用的情况下,这时候我们需要自己手动来进行调用。类名._ _ _ init _ _

当多个父类中出现相同的方法名的时候,子类优先选择写在继承列表前面的那个

class 类名 (父类1,父类2,…)

​ 类体

注意:()中为我们的继承列表。

多态

多态:本质上指一类事物的多种表现形态,它是依赖于继承而存在。

在python中不存在真正的多态,因为python是一个动态数据类型的语言。

鸭子模型:

如果有一只鸟,走路像鸭子,叫声像鸭子,那么我们就可以称这只鸟叫鸭子。

我们不关心它的数据类型,我们只关心它的使用。

isinstance(obj,type)

功能:判断某个对象是否属于某种类型

当这个对象属于这种类型或者属于这种类型的子类,那么返回Ture,否则返回False

dir(object)

功能:查看指定对象的所有的属性以及方法,以列表的方式返回。

函数重启

当我们打印对象的时候,默认情况下显示的是地址,当我们不想让其显示地址的时候,我们可以重写系统中STR函数,当执行print()或者str()函数的时候,会自动调用此方法。因此_ _ str _ _ 函数的返回值就是我们打印对象的信息。

当一个类中重写了_ _ repr_ _ 函数,而没有重写_ _ str _ _ 函数的时候,我们可以使用_ _ str _ _ = _ _ repr_ _

运算符重载

+运算符重载,更改add

def __add__(self, other):
    return Person(self.name,self.age + other.age)

猜你喜欢

转载自blog.csdn.net/weixin_45183510/article/details/92845268