设为首页 加入收藏

TOP

面向对象2
2017-11-20 08:34:56 】 浏览:76
Tags:面向 对象

类的继承

 1 class person(object):
 2     def __init__(self,name,age):
 3         self.name = name
 4         self.age = age
 5 
 6     def info(self):
 7         print("the person's name is %s age is %d"%(self.name, self.age))
 8 
 9 class yello_person(person):  #继承person类
10     def __init__(self, name, age, level):
11         person.__init__(self, name, age)  #构造函数先继承父类,自己再增加属性参数
12         self.level = level
13 
14     def show_level(self):
15         print("the person %s level is %d"%(self.name, self.level))
16 
17 y1 = yello_person('zsq', 28, 15)
18 y1.info()  #使用继承父类的方法
19 y1.show_level()  #使用子类自己的方法

上面代码中yello_person继承了person父类。

子类中构造函数先对父类的构造函数进行继承;然后加上自己的特有属性。

18,19行示例如何使用对象分别调用父类和子类的方法

 1 class SchoolMember(object):
 2     Member = 0
 3     def __init__(self, name, age):
 4         self.name = name
 5         self.age = age
 6         SchoolMember.regist(self)  #构造函数中直接调用注册方法,给成员数量加1
 7     def regist(self):
 8         SchoolMember.Member += 1  #操作公有属性
 9 
10     def display(self):  #打印对象所有属性的方法
11         print('%s info is--'%self.name)
12         for k,v in self.__dict__.items():
13             print('\t', k, '\t',v)
14         print('end ---')
15 
16     def __del__(self):  #析构函数,在手动删除某个对象时会对该对象执行。或者整个程序结束时会对所有对象执行,此程序会在程序末尾打印。
17         print('开除了%s'%self.name)
18 
19 class Teacher(SchoolMember):
20     '''
21     定义Teacher子类,在初始化时自动完成注册功能。在继承父类基础上增加自己的属性以及方法
22     '''
23     def __init__(self, name, age, salay, course):
24         SchoolMember.__init__(self, name, age)
25         self.salary = salay
26         self.couesr = course
27     def teaching(self):
28         print("%s teaching %s"%(self.name, self.couesr))
29 
30 class Student(SchoolMember):
31     def __init__(self, name, age, tuition ):
32         SchoolMember.__init__(self, name, age)
33         self.tuition = tuition
34     def tuition(self):
35         print('%s pay money %d for study'%(self.name, self.tuition))
36 
37 
38 t1 = Teacher('zsq', 28, 15000, "cloud_compute")
39 t1.teaching() #调用子类方法
40 t1.display() #调用父类方法
41 print(SchoolMember.Member) #打印学校成员,在对象初始化时自动加1

 

上面代码中6行示例如何在构造函数中操作公有属性,实现类似全局计数功能。

10行定义的方法示例如何在父类中打印对象的所有属性

 

多态

统一的调用接口,对不同对象有不同的处理逻辑。

 1 class Animal(object):
 2     def talk(self):
 3         print('this is father class')
 4 
 5 class Dog(Animal):
 6     def talk(self):
 7         print("旺旺旺")
 8 
 9 class Cat(Animal):
10     def talk(self):
11         print("喵喵喵")
12 
13 d1 = Dog()
14 c1 = Cat()
15 def animal_talk(obj):   #当前实现统一接口调用不同对象产生不同效果,即多态。可以使用示例函数作为过渡方案
16     obj.talk()   #此处obj为具体的对象,调用对象的talk方法。即子类中重构以后的方法,来实现多态。
17 animal_talk(d1)
18 animal_talk(c1)

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python基础(2)---数据类型 下一篇python基础(3)---流程控制

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目