Python:父类,子类继承关系详解。(如何在子类中增加新的属性?)

1.类的定义

class 类名:

    def __init__(self, 参数表)def 方法名(self, 参数表):

self:指对象的实例

2.子类的定义

类的继承机制:代码复用
一般–>特殊,从父类继承属性和方法

class 子类名(父类名)def __init__(self, 参数表, 新的属性)super().__init__(参数表)
	self.新的属性 = 新的属性
	
	def 重定义方法(self, 参数表):

3.实例:

(1)问题
在这里插入图片描述
(2)程序

class People:

    def __init__(self, name, city):
        self.name = name
        self.city = city

    def moveto(self, newcity):
        self.city = newcity

    def __lt__(self, other):
        return self.city < other.city

    def __str__(self):
        return '(%s, %s)' % (self.name, self.city)

    __repr__ = __str__

class Teacher(People):

    def __init__(self, name, city, school):
        super().__init__(name, city)        #保留父类初始化方法
        self.school = school                # 增加新类

    def moveto(self, newschool):
        self.school = newschool

    def __lt__(self, other):
        return self.school < other.school

    def __str__(self):
        return '(%s, %s, %s)' % (self.name, self.city, self.school)

    __repr__ = __str__
'''
s = list()

s.append(People('Jane', 'Beijing'))
s.append(People('Mike', 'Shanghai'))
s.append(People('CoCo', 'Anhui'))
s.append(People('kang', 'Chengdu'))
'''
s = list()

s.append(Teacher('Jane', 'Beijing', 'SCU'))
s.append(Teacher('Mike', 'Shanghai', 'BKU'))
s.append(Teacher('CoCo', 'Anhui', 'HNU'))
s.append(Teacher('kang', 'Chengdu', 'ZZU'))
print('original:', s)

s.sort()
print('sorted:', s)
s1 = Teacher('Jane', 'Beijing', 'SCU')
s1.moveto('TJU')
print('the new school of %s is: %s' % (s1.name, s1.school) )

结果:

original: [(Jane, Beijing, SCU), (Mike, Shanghai, BKU), (CoCo, Anhui, HNU), (kang, Chengdu, ZZU)]
sorted: [(Mike, Shanghai, BKU), (CoCo, Anhui, HNU), (Jane, Beijing, SCU), (kang, Chengdu, ZZU)]
the new school of Jane is: TJU
  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值