欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[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