super方法简要说明,关于继承中super方法的一些笔记

上边举2个例证,一样的代码应用 python2 和
python叁 写的,大家瞩目两段程序中水深绿加粗的有的:

在念书python类传承的时候,有未有被super吸引。原来那只是新式类的标记而已,并且能够改写全部地点父类的一律属性

super方法简要说明,关于继承中super方法的一些笔记。super

python2的类继承使用super方法:

类名.__mro__   <==> 实例对象.__class__.__mro__

 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()

super().__init__ <==>super(类名{所要承接的父类的类名},
self).__init__()

出口如下:

print(Dog.__mro__)#翻看承继关系(其父类)

我的位置是: 8 2

print(d.__class__.__mro__)

相关文章