继承性、封装性(概念比较抽象)、多态性
#继承性
class People():
sum = 0
def __init__(self,age,gender = 'Male'):
self.age = age
self.gender = gender
def get_gender(self):
print(self.gender)
class Students(People):
#People为Students的父类,反之子类
# sum = 0
# def __init__(self,name):
# self.name = name
# self.__class__.sum += 1
def go_to_sleep(self):
print('Go to sleep.')
John = Students(10)
print(John.sum) #继承了父类的sum,子类对象调用父类类变量
print(Students.sum) #子类直接调用父类类变量
John.get_gender() #调用父类方法
一个父类可以有多个子类,子类又有多个子子类
一个子类可以有多个父类,即多继承
非主流继承方式、因为如果改变父类、子类内部要大改,不方便
class People():
sum = 0
def __init__(self,age,race,gender):
self.age = age
self.race = race
self.gender = gender
def get_info(self):
print(self.age,self.race,self.gender)
class Students(People): #People为Students的父类,反之子类
def __init__(self,name,school,age,race,gender):
People.__init__(self,age,race,gender)
#这里加self是类来调用实例方法,不加的话,实例方法不知道是哪个对象在调用自己
self.name = name
def go_to_sleep(self):
print('Go to sleep.')
John = Students('John','Fudan',18,'Oriental','Male')
John.get_info()
主流继承方式,用super()函数
class People():
sum = 0
def __init__(self,age,race,gender):
self.age = age
self.race = race
self.gender = gender
def get_info(self):
print(self.age,self.race,self.gender)
def testing(self):
print('This is a parent method.')
class Students(People):
def __init__(self,name,school,age,race,gender):
super(Students,self).__init__(age,race,gender)
self.name = name
self.school = school
def go_to_sleep(self):
print('Go to sleep.')
def testing(self):
super(Students,self).testing() #同名父类方法的调用方法,任用super函数
print('This is a child method.')
John = Students('John','Fudan',18,'Oriental','Male')
John.get_info()
John.testing() #子类,父类方法同名,子类的方法会覆盖父类方法