当前位置:   article > 正文

Python面向对象学习笔记——继承_头歌学习-python面向对象之继承第1关:学习-python面向对象之继承

头歌学习-python面向对象之继承第1关:学习-python面向对象之继承

一、基本继承

从技术上讲,所有的Python类都是一个叫做object的特殊类的子类。它提供了以双下划线开头的方法(仅内部使用),它使Python以同样的方式对待所有对象。

例如:

class MySubClass(object):
	pass
  • 1
  • 2
'
运行

注意:在Python3中,如果我们不提供一个具体的父类,这个类就会自动从object继承。

父类,即是被继承的类;子类,一个从父类继承过来的类。
可以说,子类来源于父类,也可以说,子类扩展了父类。

例如,我们现在命名一个简单的“联系人列表”,且初始化所有联系人于姓名。

class Contact:
    all_contaction = []
    
    def __init__(self,name,email):
        self.name = name
        self.email = email
        Contact.all_contaction.append(self)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
'
运行

此时列表all_contaction是类定义的一部分,会被所有类的实例共享。这就意味着这里只有Contact.all_contaction这一个列表。

现在,我们可以添加一个order方法,此时将联系人当成供应商对待,

class Supplier(Contact):
    def order(self,order):
        print("If this were a real system we would send""{} order to {}".format(order,self.name))

  • 1
  • 2
  • 3
  • 4

二、扩展内置类

这种继承的应用就是给内置类增加功能。

例如:

class ContactList(list):
    def search(self,name):
        matching_contacts = []
        for contact in self:
            if name in contact.name:
                matching_contacts.append(contact)
            return matching_contacts
        
class Contact:
    all_contacts = ContactList()
    
    def __init__(self,name,email):
        self.name = name
        self.email = email
        self.all_contacts.append(self)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
'
运行

在这里,我们创建了一个新的ContactList类来扩展Python内置的List,而不是实例化一个普通的列表作为我们的类变量。

三、重写和Super

继承适合给已经存在的类添加新的行为,假如需要改变行为,就需要重写__in__函数。
重写就是在子类里用一个(和超类相同的名字)新的方法来改变或者覆盖超类里的这个方法。

例如:

class Friend(Contact):
    def __init__(self, name, email, phone):
        super().__init__(name, email)
        self.phone = phone
  • 1
  • 2
  • 3
  • 4

四、多重继承

多重继承其实并不推荐使用。但是原则上讲它非常简单:一个从多个父类继承过来的子类,可以访问所有父类的功能。

多重继承的定义:

    class DerivedClassName(Base1, Base2, Base3):
    <statement-1>

    .

    .

    <statement-N>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/913401
推荐阅读
相关标签
  

闽ICP备14008679号