python类的继承原理,好比调鸡尾酒,用继承创建单身程序员类实例

python类继承的原理

python类继承的原理,大家完全可以将其想象为调鸡尾酒,就是电视上调酒师拿着一个杯子甩来甩去的那种,我们不难发现,调鸡尾酒会用很多的原材料来勾兑(至于严格上来说是不是勾兑鄙人也不清楚),比如什么威士忌啦、汽水啦、果汁啦、薄荷啦、盐巴啦、橄榄啦等等,有时候还会打个火......如此一来,鸡尾酒不仅就具备了多种原材料的味道,而且还具备了多种原材料调和出来的味道,更关键的是具备了鸡尾酒这样的文化属性。我们可以说,鸡尾酒就是继承了多种原材料的属性,并有可能发展出了自己的属性。

python类的继承也大概如此,而且从调鸡尾酒的原理我们也可以进一步推出python类的继承的作用好处。


python类继承的强大功能和作用

高效:有了原材料(python编程中的各种父类),我们就可以很快地调制出新品种的酒水饮料(新的python类),以用于满足不同的顾客(满足python编程中不同的功能需求),而不用从源头开始制曲酿酒,所以可以说通过类的继承是非常高效的。比类的继承更高效的应该是python类的多态,这个我们将在下一个章节中进行介绍。

python类的继承

类的继承,顾名思义就是从父类(Super class)中继承得到全部的变量和方法,而作为父类的子类(Subclass)在继承到了全部的变量和方法的同时,又可以根据需求来修改、拓展,就像子承父业也是可以进行业务的进一步扩展或改变。

前面的两个章节,在打怪游戏和创建一个精通算术并且能展示肖像的人的实例当中,设计的两个类都“没有”使用到继承(实际上是默认继承了object类,object类是所有类的基类,也就是所有类的父类Base class),下面的例子中,我们将使用继承的方法。


Python类继承的语法基本结构

class subclass(superclassA, superclassB...):

python类的继承实例

很多python的文档或教程在讲到python类的继承的时候会用animal来讲解,鄙人之前自学python的时候接触到的好像也是这个,现在我们创新(叛逆)一点,来创建一个程序员的类,并使用继承的方式,代码如下:

class Person(): #声明一个Person类
    def __init__(self, name):
        self.name = name
    def person_speak(self):
        print('大家好。')

class Workers(Person): #声明的打工者的类单继承了Person这个类(实际上还有一个object基类)

    def __init__(self, name, age):
        Person.__init__(self,name) #可以直接调用Person类的初始化方法,注意参数要与上面的Person类的保持一致。
        self.age = age

    def workers_speak(self):
        print('我是个打工者,名字叫%s,今年%s岁!' %(self.name, self.age))


class GoodGuy(Person):
    def __init__(self,name,natrue):
        Person.__init__(self, name)
        self.natrue = natrue
    
    def goodguy_speak(self):
        print('我性格%s,对爱情就像对科学计算一样严谨认真,是一个好人,这一点是证据确凿的,因为每次跟人表白,她们总爱说我是个Good Guy!'%(self.natrue))



class Programmer(Workers, GoodGuy): #声明一个程序员的类,继承了Workers和GoodGuy类

    def __init__(self, name, age, occupation, natrue, hair, companion):
        Workers.__init__(self,name,age)
        GoodGuy.__init__(self,name,natrue)
        self.occupation = occupation
        self.hair = hair
        self.companion = companion
    
    def programmer_speak(self):
        print('我是个%s,厉不厉害不清楚,但头发是%s的,而且%s!' %(self.occupation, self.hair, self.companion))


programmer = Programmer('小明','28','程序员','内向','秃顶','单身')
programmer.person_speak() #注意,我们并没有在Programmer类中创建person_speak()实例方法,但是通过继承直接获得
programmer.workers_speak() #同上,注意,Programmer类并没有直接继承Person类,为什么也可以调用person_speak(),见下面的代码解析
programmer.goodguy_speak()
programmer.programmer_speak()
————————————————————————————————————————————
程序输出:
大家好。
我是个打工者,名字叫小明,今年28岁!
我性格内向,对爱情就像对科学计算一样严谨认真,是一个好人,这一点是证据确凿的,因为每次跟人表白,她们总爱说我是个Good Guy!
我是个程序员,厉不厉害不清楚,但头发是秃顶的,而且单身!


#原创内容,转载请注明“大器编程x1y1z1.com”

代码解析

如上代码,子类通过对父类的继承,全部获得了父类的变量、方法等,而且是可以不断传递的,比如上面的Programmer类并没有直接继承Person类,却因为继承了Workers类或GoodGuy类,而间接地继承了Person的所有变量和方法,当然,本例子中并没有在类中创建变量。


类的继承就先介绍到这里,下一章节,我们将继续介绍python类的继承机制,尤其是python3以上版本的继承机制。


全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.