python 類繼承
阿新 • • 發佈:2017-09-15
參數 http works rep vid pan truct 例子 usr
【轉】http://www.cnblogs.com/mmix2009/p/3538663.html
1 #!/usr/bin/python 2 # Filename: inherit.py 3 4 class SchoolMember: 5 ‘‘‘Represents any school member.‘‘‘ 6 def __init__(self, name, age): 7 self.name = name 8 self.age = age 9 print‘(Initialized SchoolMember: %s)‘% self.name10 11 def tell(self): 12 ‘‘‘Tell my details.‘‘‘ 13 print‘Name:"%s" Age:"%s"‘% (self.name, self.age), 14 15 class Teacher(SchoolMember): 16 ‘‘‘Represents a teacher.‘‘‘ 17 def__init__(self, name, age, salary): 18 SchoolMember.__init__(self, name, age) 19 self.salary = salary20 print‘(Initialized Teacher: %s)‘% self.name 21 22 def tell(self): 23 SchoolMember.tell(self) 24 print‘Salary: "%d"‘% self.salary 25 26 class Student(SchoolMember): 27 ‘‘‘Represents a student.‘‘‘ 28 def __init__(self, name, age, marks): 29 SchoolMember.__init__(self, name, age) 30 self.marks = marks 31 print‘(Initialized Student: %s)‘% self.name 32 33 def tell(self): 34 SchoolMember.tell(self) 35 print‘Marks: "%d"‘% self.marks 36 37 t = Teacher(‘Mrs. Shrividya‘,40,30000) 38 s = Student(‘Swaroop‘,22,75) 39 members = [t, s] 40 for member in members: 41 member.tell()# works for both Teachers and Students 42 (源文件:code/inherit.py) 43 輸出 44 45 $ python inherit.py 46 (Initialized SchoolMember: Mrs. Shrividya) 47 (Initialized Teacher: Mrs. Shrividya) 48 (Initialized SchoolMember: Swaroop) 49 (Initialized Student: Swaroop) 50 51 Name:"Mrs. Shrividya" Age:"40" Salary: "30000" 52 Name:"Swaroop" Age:"22" Marks: "75"
它如何工作
為了使用繼承,我們把基本類的名稱作為一個元組跟在定義類時的類名稱之後。然後,我們註意到基本類的__init__
方法專門使用self
變量調用,這樣我們就可以初始化對象的基本類部分。這一點十分重要——Python不會自動調用基本類的constructor,你得親自專門調用它。
我們還觀察到我們在方法調用之前加上類名稱前綴,然後把self
變量及其他參數傳遞給它。
註意,在我們使用SchoolMember
類的tell
方法的時候,我們把Teacher
和Student
的實例僅僅作為SchoolMember
的實例。
另外,在這個例子中,我們調用了子類型的tell
方法,而不是SchoolMember
類的tell
方法。可以這樣來理解,Python總是首先查找對應類型的方法,在這個例子中就是如此。如果它不能在導出類中找到對應的方法,它才開始到基本類中逐個查找。基本類是在類定義的時候,在元組之中指明的。
一個術語的註釋——如果在繼承元組中列了一個以上的類,那麽它就被稱作多重繼
python 類繼承