刻意练习Python基础 ——day 14:类与对象(下)

17天 —— Python基础刻意练习

Day 01——Task01:变量、运算符与数据类型
Day 02——Task02:条件与循环
Day 03——Task03:列表与元组(上)
Day 04——Task03:列表与元组(下)
Day 05——Task04:字符串与序列
Day 06——Task05:函数与Lambda表达式(上)
Day 07——Task05:函数与Lambda表达式(下)
Day 08——Task06:字典与集合
Day 09——Task07:文件与文件系统(上)
Day 10——Task07:文件与文件系统(下)
Day 11——Task08:异常处理
Day 12——Task09:else 与 with 语句
Day 13——Task10:类与对象(上)
Day 14——Task10:类与对象(下)
Day 15——Task11:魔法方法(上)
Day 16——Task11:魔法方法(下)
Day 17——Task12:模块
    



类与对象



补充:子类继承父类构造函数说明


 情况一:子类需要自动调用父类的方法

  子类不重写 __init__方法,实例化子类后,会自动调用父类的 __init__的方法。

class Father(object):
    
    def __init__(self, name):
        self.name = name
        print ("name: {}".format(self.name))
        
    def getName(self):
        return 'Father:' + self.name

class Son(Father):
    def getName(self):
        return 'Son:' + self.name
    
 
if __name__ == '__main__':
    son = Son('MiveVax')
    print (son.getName())


# name: MiveVax
# Son:MiveVax



 情况二:子类不需要自动调用父类的方法

  如果子类重写__init__方法,实例化子类后,将不会自动调用父类的__init__的方法。

class Father(object):
    
    def __init__(self, name):
        self.name = name
        print ("name: {}".format(self.name))
        
    def getName(self):
        return 'Father:' + self.name
 
class Son(Father):
    def __init__(self, name):
        print("hi")
        self.name =  name
    def getName(self):
        return 'Son:' + self.name
 
if __name__ == '__main__':
    son=Son('MiveVax')
    print (son.getName())

# hi
# Son:MiveVax



 情况三:子类重写__init__方法又需要调用父类的方法

  如果重写了__init__ 时,要继承父类的构造方法,可以使用 super 关键字:super(子类,self).__init__(参数1,参数2,....)
  还有一种经典写法:父类名称.__init__(self,参数1,参数2,...)

class Father(object):
    
    def __init__(self, name):
        self.name = name
        print ("name: {}".format(self.name))
        
    def getName(self):
        return 'Father:' + self.name
 
class Son(Father):
    def __init__(self, name):
        super(Son, self).__init__(name)
        print("hi")
        self.name =  name
    def getName(self):
        return 'Son:' + self.name
 
if __name__ == '__main__':
    son=Son('MiveVax')
    print (son.getName())

# name: MiveVax
# hi
# Son:MiveVax

参考资料

  • https://www.runoob.com/python3/python3-class.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章