[python] 在 python2和3中关于类继承的 super方法简要说明
程序员文章站
2023-10-15 13:18:06
下面举一个例子,同样的代码使用 python2 和 python3 写的,大家注意两段程序中红色加粗的部分: python2的类继承使用super方法: 输出如下: python3的类继承使用super方法: 输出如下: super方法具体使用注意事项可以参考官方的指导文档,里面有详细的使用例子,但 ......
下面举一个例子,同样的代码使用 python2 和 python3 写的,大家注意两段程序中红色加粗的部分:
python2的类继承使用super方法:
1 #-*- coding:utf-8 -*- 2 ''' 3 created on 2018年8月27日 4 5 @author: anyd 6 ''' 7 import random as r 8 9 class fish(object): 10 def __init__(self): 11 self.x = r.randint(0, 10) 12 self.y = r.randint(0, 10) 13 14 def move(self): 15 #这里主要演示类的继承机制,就不考虑检查场景边界和移动方向的问题 16 #假设所有鱼都是一路向西游 17 self.x -= 1 18 print "我的位置是:", self.x, self.y 19 20 class goldfish(fish): 21 pass 22 23 class carp(fish): 24 pass 25 26 class salmon(fish): 27 pass 28 29 #上边几个都是食物,食物不需要有个性,所以直接继承fish类的全部属性和方法即可 30 #下边定义鲨鱼类,这个是吃货,除了继承fish类的属性和方法,还要添加一个吃的方法 31 32 class shark(fish): 33 def __init__(self): 34 super(shark,self).__init__() 35 self.hungry = true 36 37 def eat(self): 38 if self.hungry: 39 print "吃货的梦想就是天天有的吃^_^" 40 self.hungry = false 41 else: 42 print "太撑了,吃不下了!" 43 44 aa = shark() 45 aa.move()
输出如下:
我的位置是: 8 2
python3的类继承使用super方法:
1 #-*- coding:utf-8 -*- 2 ''' 3 created on 2018年8月27日 4 5 @author: anyd 6 ''' 7 import random as r 8 9 class fish(object): 10 def __init__(self): 11 self.x = r.randint(0, 10) 12 self.y = r.randint(0, 10) 13 14 def move(self): 15 #这里主要演示类的继承机制,就不考虑检查场景边界和移动方向的问题 16 #假设所有鱼都是一路向西游 17 self.x -= 1 18 print ("我的位置是:", self.x, self.y) 19 20 class goldfish(fish): 21 pass 22 23 class carp(fish): 24 pass 25 26 class salmon(fish): 27 pass 28 29 #上边几个都是食物,食物不需要有个性,所以直接继承fish类的全部属性和方法即可 30 #下边定义鲨鱼类,这个是吃货,除了继承fish类的属性和方法,还要添加一个吃的方法 31 32 class shark(fish): 33 def __init__(self): 34 super().__init__() 35 self.hungry = true 36 37 def eat(self): 38 if self.hungry: 39 print ("吃货的梦想就是天天有的吃^_^") 40 self.hungry = false 41 else: 42 print ("太撑了,吃不下了!") 43 44 aa = shark() 45 aa.move()
输出如下:
我的位置是: 7 4
super方法具体使用注意事项可以参考官方的指导文档,里面有详细的使用例子,但个人觉得这种super方法不太容易让人看得舒服,个人比较偏好采用未绑定的方法来写,这样就不管是python2 还是 python3,都是没有问题的。如下:
1 class shark(fish): 2 def __init__(self): 3 fish.__init__(self) 4 self.hungry = true