Python 面向对象基础(三)--继承
面向对象的几个特性
-
继承
-
多态
-
封装(私有属性、方法)
继承
一个类继承另外一个类时,自动获得被继承类(即父类)的所有方法和属性。同时
子类还可以定义自己的属性和方法。
且父类必须在同一个文件中,或者导入到该项目中。
在Python3.5的版本中只需要
super(obj.self).__init__(make,model,year)
super(obj.self).fun()
改写父类的方法
如上的init(),当子类调用和父类的同名方法时,,首先调用子类里面的被重写的方法,忽略父类的方法。
#多继承 以普通的类为基础建立专门的类对象 class Animal(object): '''父类(基类)''' def __init__(self,name,age): self.name=name self.age=age def run(self): print('Animal is running...') def eat(self): print('Animal is eating...') class Pet: def make(self,obj): print('%s is making……%s'%(self.name,obj.name) ) class Dog(Animal): '''子类(派生类)''' def __init__(self,attr_d,name,age): '''重构构造函数''' super(Dog,self).__init__(name,age)#初始化父类属性 self.attr_d=attr_d def run(self): print('dog is running...') class Cat(Animal,Pet): def __init__(self,name,age): super(Cat,self).__init__(name,age) print('构造函数ing……') def run(self): '''改写父类方法''' super(Cat,self).run() print('Cat is running...') d=Dog('wang……','Kim',22) d.run() d.eat() c=Cat(' Miss',23) c.run() c.make(d) --------- dog is running... Animal is eating... 构造函数ing…… Animal is running... Cat is running... Miss is making……Kim True
检测是否有继承关系
print(isinstance(d,Dog)) print(isinstance(d,Cat)) print(isinstance(d,Animal))
类继承优先级关系
新式类 class new(object): 广度优先

class A: def __init__(self): print('A') class B(A): pass def __init__(self): print('B') class C(A): def __init__(self): print('C') class D(B,C): pass def __init__(self): print('D')
D--->B---->A
------>C---->A
多态
一个接口多种实现
#一种接口。多种实现 class Person(object): '''父类''' def __init__(self, name, gender): self.name = name self.gender = gender def whoAmI(self): return 'I am a Person, my name is %s' % self.name class Student(Person): '''学生类''' def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score def whoAmI(self): return 'I am a Student, my name is %s' % self.name class Teacher(Person): '''教师类''' def __init__(self, name, gender, course): super(Teacher, self).__init__(name, gender) self.course = course def who_am_i(x):#创建一个接口 print(x.whoAmI()) p = Person('Tim', 'Male') s = Student('Bob', 'Male', 88) t = Teacher('Alice', 'Female', 'English') who_am_i(p) who_am_i(s) who_am_i(t) ---------- I am a Person, my name is Tim I am a Student, my name is Bob I am a Person, my name is Alice

浙公网安备 33010602011771号