|
面向对象的集成和现实生活中的继承相同,即:子继承父的内容
例如:
狗:汪、吃、喝、拉、撒
猫:喵、吃、喝、拉、撒
为狗、猫、各自创建一个"类":
class Dog:
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
def bark(self):
print("%s is dog dog !" % (self.name))
def eat(self):
print("%s is eating something now!" % (self.name))
def drink(self):
print("%s is drinking something now!" % (self.name))
def shit(self):
print("%s is shiting now!" % (self.name))
def pee(self):
print("%s is peeing now!" % (self.name))
#########
class Cat:
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
def miaow(self):
print("%s is cat cat !" % (self.name))
def eat(self):
print("%s is eating something now!" % (self.name))
def drink(self):
print("%s is drinking something now!" % (self.name))
def shit(self):
print("%s is shiting now!" % (self.name))
def pee(self):
print("%s is peeing now!" % (self.name))
上述两端代码可以看出,吃喝拉撒都是猫、狗特有的属性,但是分别在两个类中编写了两次,通过继承思路修改代码:
父类"动物":吃、喝、拉、撒
子类"狗":汪汪叫(继承父类功能)
子类"猫":喵喵叫(继承父类功能)
class Animal:
def eat(self):
print("%s is eating something now !" % (self.name))
def drink(self):
print("%s is drinking something now!" % (self.name))
def shit(self):
print("%s is shiting now!" % (self.name))
def pee(self):
print("%s is peeing now!" % (self.name))
class Dog(Animal):
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
def bark(self):
print("%s is dog dog !" % (self.name))
class Cat(Animal):
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
def miaow(self):
print("%s is cat cat" % (self.name))
dog1 = Dog("cisco",2,"male")
cat1 = Cat("xiaohei",3,"female")
dog1.bark()
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
任何一个过程中,只要找到,就停止继续查找 |
|
|