Python面向对象之继承

1.格式

class 类名(父类1, 父类2, ...):
	类体

2.单继承

  • 子类继承父类后,可以增加方法,修改父类中的方法或是拓展父类中的方法

(1)增加方法

class mylist(list):    #继承python中的list类
	def front_insert(self, v):    #增加front_insert方法
		self.insert(0, v)

lst=mylist()
lst.append(11)
print(lst)
lst.front_insert(55)
print(lst)
[11]
[55, 11]

(2)修改方法

class mylist(list):    #继承python中的list类
	def append(self):    #修改父类中的append方法
		print("1111")

lst=mylist()
lst.append()
1111

(3)拓展方法

class mylist(list):    #继承python中的list类
	def append(self, v):       #对父类中的append方法进行拓展
		super(mylist, self).append(v)    #利用super方法调用父类中的append方法
		print("ok")        #对父类append方法的拓展
		
lst=mylist()
lst.append(11)
lst.front_insert(1)
print(lst)
ok
ok
[11, 1]

3.多继承

(1)示例

class father(object):
	def __init__(self,name,age):
		self.name=name
		self.age=age
	def print_info(self):
		print(self.name, self.age)

class mother(object):
	def mother_info(self):
		print("我是mother类中的方法")

class son(father, mother):
	pass

myson=son("hhh",22)     #子类会继承父类中的构造方法,所以在子类实例化时要注意
myson.print_info()
myson.mother_info()
hhh 22
我是mother类中的方法

(2)注意

  • 子类会继承父类中的构造方法,所以在子类实例化时要注意
  • 子类无法继承父类中的私有方法
  • 当子类有多个父类,且不确定会不会有同名方法,则使用方法时会从左往右,深度优先搜索该方法,使用第一个搜索到的方法
  A       B      #假设ABCD中可能存在同名方法test
C(A)     D(B)    #C继承A,D继承B
     F(CD)       #F继承C和D
a.F()
a.test()      #从左往右,深度优先
#即先从C开始找,若C中没有,在它的父类A中找,A中没有,再从D中找,以此类推
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值