【三】当对象是相似的

本文探讨了Python中的继承概念,包括基本继承、扩展内置类、重写和super的使用,以及多重继承。通过继承,可以实现代码复用,创建类之间的"是一个"关系。文章还介绍了如何通过继承扩展内置的list类并添加搜索功能,以及如何通过super()调用父类方法避免重复代码。最后讨论了多重继承和mixin模式,强调了在实际使用多重继承时需要注意的问题。
摘要由CSDN通过智能技术生成

在编程重复的代码是很不好的,不应该在很多地方有多份相同或类似的代码副本。

把具有相似功能的代码片段或者对象合并起来的方法有多种,这一章主要讲继承

继承允许我们在两个或多个类之间创建一种“是一个”的关系,这种关系把共通的特性抽象到一个超类,特有的细节存于子类中。

基本继承

从就上来讲,每一个类都使用了继承,所有的Python类都是一个叫做object的特殊类的子类。这个类提供了非常少的数据和行为(这些它提供的行为都是以双下划线开头的方法,这些方法都只供内部使用。)

如果不指明我的类的继承,那这个类自动从object继承过来。我们也可以公开声明从object类继承。:

class MyClass(object):
    pass

这个object就是MyClass超类,也叫父类,指被继承的类。子类是继承过来的类,如MyClass。我们可以说一个子类来源于父类。或者说这个子类扩展了父类

那么如何应用,最基本的功能就是使用继承为父类添加功能。
我们从一个简单的通讯录开始,这个通讯录可以记录一些人的姓名和电子邮件地址。contact类负责维护一个类变量中所有联系人的列表,并初始化姓名和地址:

class Contact:
    all_contacts = []

    def __init__(self,name,email):
        self.name = name
        self.email = email
        Contact.all_contacts.append(self)

all_contacts这个列表是一个类变量,它属于类定义的一部分,被所有这个类的实例共享。这意味着有且只有一个Contact.all_contacts列表。我们在任意一个对象中调用self.all_contacts,会引用这个列表。在初始化函数中的代码Contact.all_contacts.append(self)保证了无论何时我们创建一个新的contact类,这个列表都会自动把这个对象添加进来。

这是一个很简单的类,它允许我们记录关于联系人的一些信息。如果我们的某些联系人同时是需要从他们那里订购东西的供应商该怎么办。我们可以给Contact添加一个order方法,但这样会导致所有的联系人都可以订购东西。所以我们可以新建一个Supplier类,和Contact类一样,但是它有额外的order方法:

class Supplier(Contact):
    def order(self,order):        
        print("If this wera a real system we would send ""{} order to {} ".format(order,self.name))
        #注意此处也可以这样写:
        #print("If this w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值