Python 类继承(相关知识点)

1,子类继承父类(单继承示例)

  解释:子类不重写 __init__,实例化子类时,会自动调用父类定义的 __init__。

案例:

# 类定义
class Father:
    # 定义构造方法
    def __init__(self, n, a):
        self.name = n
        self.age = a
        print("name: %s" % (self.name))

    def speak(self):
        print("%s 说: 我 %d 岁。" % (self.name, self.age))

# 单继承示例
class Son(Father):
    pass

if __name__ == '__main__':
    son = Son('father', 53)
结果:
name: father

2,如果重写了__init__ 时,实例化子类,就不会调用父类已经定义的 __init__:

# 类定义
class Father:
    # 定义构造方法
    def __init__(self, n, a):
        self.name = n
        self.age = a
        print("name: %s" % (self.name))

    def speak(self):
        print("%s 说: 我 %d 岁。" % (self.name, self.age))


# 单继承示例
class Son(Father):
    def __init__(self, n):
        self.name = n
        print("son's name: %s" % (self.name))


if __name__ == '__main__':
    son = Son('xiaoming')

结果:
son's name: xiaoming
3,子类重写__init__()方法又需要调用父类的方法:使用super关键词。
super(子类,self).__init__(参数1,参数2,....) 
super().__init__(参数1, 参数2, ...) # python3新版本写法


class Father(object):
    def __init__(self, name):
        self.name=name
        print ( "name: %s" %( 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('runoob')
    print ( son.getName() )
结果:
name: runoob
hi
Son runoob

 

posted @ 2023-09-04 15:06  公子Learningcarer  阅读(10)  评论(0编辑  收藏  举报