在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)
#任何类都是继承自object
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def printPerson(self):
print('%s is %d years old'%(self.name,self.age))
per = Person('Mike',54)
per.printPerson()
#类如何去实现继承关系
#一个学生是一个人,而且应该有成绩
#直接继承Person类,不实现任何方法
"""
class Student(Person):
pass
"""
class Student(Person):
def __init__(self, name, age, score):
Person.__init__(self, name, age) #初始化父类构造器
self.score = score
self.__id = '123456' #属性私有化
def printScore(self):
#Person.printPerson(self) #调用父类方法
print('%s\'s score is %d' % (self.name,self.score))
#getter setter方法
def set_id(self, id):
self.__id = id
def get_id(self):
return self.__id
stu = Student('Jim',13,98)
stu.printPerson()
stu.printScore()
#外部可以访问属性
print(stu.score)
#print(stu.__id)
"""
访问私有变量会抛出异常
Traceback (most recent call last):
File "oo.py", line 51, in <module>
print(stu.__id)
AttributeError: 'Student' object has no attribute '__id'
"""
#设置值之前
print(stu.get_id())
stu.set_id('987654')
#设置值之后
print(stu.get_id())
小结
继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写。