类之继承

面向对象的集成和现实生活中的继承相同,即:子继承父的内容

 

例如:

 狗:汪、吃、喝、拉、撒

 猫:喵、吃、喝、拉、撒

 

为狗、猫、各自创建一个"类":

 1 class Dog:
 2 
 3     def __init__(self,name,age,gender):
 4 
 5         self.name = name
 6 
 7         self.age = age
 8 
 9         self.gender = gender
10 
11     def bark(self):
12 
13         print("%s is dog dog !" % (self.name))
14 
15     def eat(self):
16 
17         print("%s is eating something now!" % (self.name))
18 
19     def drink(self):
20 
21         print("%s is drinking something now!" % (self.name))
22 
23     def shit(self):
24 
25         print("%s is shiting now!" % (self.name))
26 
27     def pee(self):
28 
29         print("%s is peeing now!" % (self.name))
30 
31 #########
32 
33 class Cat:
34 
35     def __init__(self,name,age,gender):
36 
37         self.name = name
38 
39         self.age = age
40 
41         self.gender = gender
42 
43  
44 
45     def miaow(self):
46 
47         print("%s is cat cat !" % (self.name))
48 
49  
50 
51     def eat(self):
52 
53         print("%s is eating something now!" % (self.name))
54 
55  
56 
57     def drink(self):
58 
59         print("%s is drinking something now!" % (self.name))
60 
61  
62 
63     def shit(self):
64 
65         print("%s is shiting now!" % (self.name))
66 
67  
68 
69     def pee(self):
70 
71         print("%s is peeing now!" % (self.name))

 

 

上述两端代码可以看出,吃喝拉撒都是猫、狗特有的属性,但是分别在两个类中编写了两次,通过继承思路修改代码:

父类"动物":吃、喝、拉、撒

子类"狗":汪汪叫(继承父类功能)

子类"猫":喵喵叫(继承父类功能)

 1 class Animal:
 2 
 3     def eat(self):
 4 
 5         print("%s is eating something now !" % (self.name))
 6 
 7  
 8 
 9     def drink(self):
10 
11         print("%s is drinking something now!" % (self.name))
12 
13  
14 
15     def shit(self):
16 
17         print("%s is shiting now!" % (self.name))
18 
19  
20 
21     def pee(self):
22 
23         print("%s is peeing now!" % (self.name))
24 
25  
26 
27 class Dog(Animal):
28 
29     def __init__(self,name,age,gender):
30 
31         self.name = name
32 
33         self.age = age
34 
35         self.gender = gender
36 
37  
38 
39     def bark(self):
40 
41         print("%s is dog dog !" % (self.name))
42 
43  
44 
45 class Cat(Animal):
46 
47     def __init__(self,name,age,gender):
48 
49         self.name = name
50 
51         self.age = age
52 
53         self.gender = gender
54 
55  
56 
57     def miaow(self):
58 
59         print("%s is cat cat" % (self.name))
60 
61  
62 
63 dog1 = Dog("cisco",2,"male")
64 
65 cat1 = Cat("xiaohei",3,"female")
66 
67 dog1.bark()
68 
69 cat1.eat()

 

在指定类的时候,括号中写另一个类,等于让当前类继承括号中类的功能。

编写继承类的思路:

把多个类公有的功能写入父类,子类只需要继承父类,这样就不需要一一编写重复的功能块。

 

多类继承:

 多类继承的时候,如何查找方法,在Python2.x的版本中区分经典类、新式类。两种不同类型的类在查找"方法"的时候查找规则是不同的。

经典类:深度优先

新式类:广度优先

如何区分"类"的类型

新式类:当前类或者父类继承了(object)

在Python3.x中,不在讨论经典类,默认都是新式类,所以我们只需要知道广度优先的查找特征。

class D:

class C:

class B(C,D):

class A(B):

ABCD四个类的关系:

B是A的父类

C,D是B的父类

这时候,在A中执行一个方法的时候,Python查找路径:

A————>B————>C————>D

任何一个过程中,只要找到,就停止继续查找

 

posted @ 2017-06-01 14:59  alben-xue  阅读(189)  评论(0编辑  收藏  举报