面对对象的3个特性

继承性、封装性(概念比较抽象)、多态性

#继承性

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()             #子类,父类方法同名,子类的方法会覆盖父类方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值