• super的用法1



    title: super的用法1
    data: 2018-4-5
    categories:

    • python
      tags:
    • python

    # -*- coding: utf-8 -*-
    
    __metaclass__ = type
    
    class Person:
        def __init__(self):
            self.height = 180
    
        def about(self, name):
            print('{} is about {}'.format(name, self.height))
    
    # 继承Person类
    class Girl(Person):
        def __init__(self):
            # super(Girl, self).__init__()
            self.age = 20
    
        def about(self, name):
    		# super(Girl, self).about(name)
            print('{} is a girl, she is about {}, and she is {}'.format(name, self.height, self.age))
    
    if __name__ == '__main__':
        li = Girl()
        li.about('lihua')
    

    报错信息如下:

    Traceback (most recent call last):
      File "C:UsersadminDesktoppythonfiless.py", line 24, in <module>
        li.about('lihua')
      File "C:UsersadminDesktoppythonfiless.py", line 20, in about
        print('{} is a girl, she is about {}, and she is {}'.format(name, self.height, self.age))
    AttributeError: 'Girl' object has no attribute 'height'
    

    报错信息提示 self.height 是不存在的,也就是说 Girl 类并没有从 Person 中继承过来这个属性。

    因为 about()__init__()这两个方法都被重写了,而 Girl 中的额 __init__中根本就没有关于 self.height 的任何信息。

    在子类中, __init__方法被重写了,为了调用父类的同方法,使用super(Girl, self).__init__()的方式。super 函数的参数,第一个是当前子类的类名字,第二个是 self,然后是点号,点号后面是所要调用的父类的方法。

    同样子类重写的 about 方法中,也可以调用父类的 about 方法。

  • 相关阅读:
    jQuery小技巧
    HTML5 学习指导
    js对象排序&&倒序
    JS 中如何判断字符串类型的数字
    JavaScript中function的多义性
    JS 继承
    45.oracle表类型、数据拆分、表分区
    44.oracle表空间的使用
    43.oracle同义词
    42.oracle物化视图
  • 原文地址:https://www.cnblogs.com/id88/p/14210888.html
Copyright © 2020-2023  润新知