python 类继承的使用
2011-04-22 14:35
381 查看
#!/usr/bin/python # Filename: inherit.py
class
SchoolMember
:
'''Represents any school member.'''
def
__init__
(self, name, age): self.name = name self.age = age
'(Initialized SchoolMember: %s)'
% self.name
def
tell
(self):
'''Tell my details.'''
'Name:"%s" Age:"%s"'
% (self.name, self.age),
class
Teacher
(SchoolMember):
'''Represents a teacher.'''
def
__init__
(self, name, age, salary): SchoolMember.__init__(self, name, age) self.salary = salary
'(Initialized Teacher: %s)'
% self.name
def
tell
(self): SchoolMember.tell(self)
'Salary: "%d"'
% self.salary
class
Student
(SchoolMember):
'''Represents a student.'''
def
__init__
(self, name, age, marks): SchoolMember.__init__(self, name, age) self.marks = marks
'(Initialized Student: %s)'
% self.name
def
tell
(self): SchoolMember.tell(self)
'Marks: "%d"'
% self.marks t = Teacher(
'Mrs. Shrividya'
,
40
,
30000
) s = Student(
'Swaroop'
,
22
,
75
)
members = [t, s]
for
member
in
members: member.tell()
# works forboth Teachers and Students
(源文件:code/inherit.py)
输出
$ python inherit.py (Initialized SchoolMember: Mrs. Shrividya) (Initialized Teacher: Mrs. Shrividya) (Initialized SchoolMember: Swaroop) (Initialized Student: Swaroop) Name:"Mrs. Shrividya" Age:"40" Salary: "30000" Name:"Swaroop" Age:"22" Marks: "75"
它如何工作
为了使用继承,我们把基本类的名称作为一个元组跟在定义类时的类名称之后。然后,我们注意到基本类的__init__方法专门使用
self变量调用,这样我们就可以初始化对象的基本类部分。这一点十分重要——Python不会自动调用基本类的constructor,你得亲自专门调用它。
我们还观察到我们在方法调用之前加上类名称前缀,然后把
self变量及其他参数传递给它。
注意,在我们使用
SchoolMember类的
tell方法的时候,我们把
Teacher和
Student的实例仅仅作为
SchoolMember的实例。
另外,在这个例子中,我们调用了子类型的
tell方法,而不是
SchoolMember类的
tell方法。可以这样来理解,Python总是首先查找对应类型的方法,在这个例子中就是如此。如果它不能在导出类中找到对应的方法,它才开始到基本类中逐个查找。基本类是在类定义的时候,在元组之中指明的。
一个术语的注释——如果在继承元组中列了一个以上的类,那么它就被称作多重继承。
相关文章推荐
- python类的继承及get和set方法的使用
- python入门:对象的建立和使用(不涉及继承)
- PYthon类的定义、继承以及使用对象(例)
- Python 类的定义、继承及使用对象
- Python类的定义、继承及类对象使用方法简明教程
- Python学习第十九天——多重继承、正则表达式和git的使用
- Python中类的定义、继承及使用对象实例详解
- Python 类的定义、继承及使用对象 [转]
- Python 类的定义、继承及使用对象
- Python+Selenium中级篇之10-Python中的继承的使用
- [Dynamic Language] Python Django: 模板引擎(4)在视图中使用模板和模板继承
- python 继承中的一个super使用
- 【Python】[面向对象高级编程] 多成继承,定制类,使用枚举
- 多继承中super()使用Python2
- 【python】继承 定制 使用元类
- python中使用多继承问题和super()内置函数的使用
- 【Python】类和对象、继承、使用文件、存储、异常、标准库(不懂)
- 【PythonDjango后台实例 第三章】Python3.6.1+Django1.8 模版的继承使用
- Python 类的定义、继承及使用对象
- python中使用多继承