講解對(duì)象:Python繼承
作者:融水公子 rsgz
特點(diǎn):
1 當(dāng)一個(gè)類繼承另一個(gè)類時(shí),它將繼承父類的所有功能(如變量和方法)
優(yōu)點(diǎn):
1 有助于重用代碼
實(shí)現(xiàn)想法:
1 一個(gè)Person父類
2 下面有兩個(gè)子類 Student Teacher
Person父類
#!/usr/bin/env python3
class Person(object):
"""返回具有給定名稱的 Person 對(duì)象"""
def __init__(self, name):
self.name = name
def get_details(self):
"""返回包含人名的字符串"""
return self.name
Student類
class Student(Person):
"""返回 Student 對(duì)象,采用 name, branch, year 3 個(gè)參數(shù)"""
def __init__(self, name, branch, year):
Person.__init__(self, name)
self.branch = branch
self.year = year
def get_details(self):
"""返回包含學(xué)生具體信息的字符串"""
return "{} studies {} and is in {} year.".format(self.name, self.branch, self.year)
Teacher類
class Teacher(Person):
"""返回 Teacher 對(duì)象,采用字符串列表作為參數(shù)"""
def __init__(self, name, papers):
Person.__init__(self, name)
self.papers = papers
def get_details(self):
return "{} teaches {}".format(self.name, ','.join(self.papers))
調(diào)用:
person1 = Person('Sachin')
student1 = Student('Kushal', 'CSE', 2005)
teacher1 = Teacher('Prashad', ['C', 'C++'])
print(person1.get_details())
print(student1.get_details())
print(teacher1.get_details())
發(fā)現(xiàn):
1 Student 類和 Teacher 類中調(diào)用 Person 類的 __init__ 方法
2 在 Student 類和 Teacher 類中重寫了 Person 類的 get_details() 方法
3 調(diào)用 student1 和 teacher1 的 get_details() 方法時(shí),使用的是各自類中定義的方法