zoukankan      html  css  js  c++  java
  • 在子类中如何调用父类方法

    '''
    子类中调用父类方法:
    子类继承了父类的方法,然后想进行修改,注意了是基于原有的基础上修改,那么就需要在子类中调用父类的方法
    '''
    
    # 方法一:父类名.父类方法(),当父类类名改变了,子类的各种调用都需要同步修改
    class A:
       money = 100
       def __init__(self, name):
          self.name = name
    
       def one(self):
          print('one')
    
       @property # 实例本身调用无需加括号,类调用无效
       def two(self):
          print('two')
    
       @classmethod # 类与实例均可调用,但参数只能使用类属性
       def three(cls):
          print('three %s' % cls.money)
    
       @staticmethod # 类的工具包,其实和普通函数一样,参数就是参数,实例和类调用时必须传参
       def four(self):
          print('four')
    
    class B(A):
       money = 1000
       def __init__(self, name, age):
          A.__init__(self, name) # 子类中调用父类的__init__方法,子类无需再self.xx=xx,但形参依旧不能少;父类调用__init__方法时,形参self不能少
          self.age = age
    
       def one(self):
          A.one('1') # 子类中调用父类方法(父类.方法名),记得类调用方法时self形参需要传参
          print(A.money) # 子类中调用父类的数据属性
          print(B.money)
          print(self.name)
    
    b1 = B('alex', 18)
    print(b1.__dict__) # 子类B初始化函数,self和name传给了A.__init__的self和name,name这个属性依旧是子类B实例化对象的数据属性
    print(b1.name)
    b1.one()
    
    
    # 方法二:super()
    class C:
       money = 100
       def __init__(self, name):
          self.name = name
    
       def test(self):
          print('C')
    
    class D(C):
       money = 1000
       def __init__(self, name, age):
          super().__init__(name) # 等同于super(D, self).__init__(name)
          self.age = age
    
       def test(self):
          print(super().money) # 调用父类的数据属性
          super().test() # 调用父类方法,等同于super(D, self).test()
    
    d1 = D('alex', 18)
    d1.test()
    while True: print('studying...')
  • 相关阅读:
    hibernate动态切换数据源
    spring mvc之@ModelAttribute注解
    Nhibernate 4.0 教程入门
    关于Ubuntu运行级别、开机启动脚本的说明
    开发工程师面试的秘密( 整理自 Export C Programming )
    Linux (Ubuntu12.04) 下开发工具安装和使用
    Java 7 中的Switch 谈 Java版本更新和反编译知识
    Java语言的个人理解
    Jetty 服务器的知识
    集训培训日记——第二天
  • 原文地址:https://www.cnblogs.com/xuewei95/p/14680949.html
Copyright © 2011-2022 走看看