python重写super_04 Python的继承、方法重写、super()类、父类私密属性的调用

继承

A类继承B类,A即可获得B类的全部公共属性和方法(包括内置属性和方法)。格式如:class A(B):

class Animal:

def sleep(self):

print("zZZ...")

def eat(self):

print("yamiyami...")

def run(self):

print("huchihuchi...")

class Dog(Animal): #Dog类拥有sleep,eat,run,bark四个方法

def bark(self):

print("汪汪汪")

方法重写

子类有时需要对继承自父类的方法进行修改或重写,这时直接定义一个与需要重写的方法名一样的方法即可,如(接上面的代码):

class xiaotianquan(Dog):

def fly(self):

print("我在飞")

#重写继承自父类的bark()方法

def bark(self):

print("我在叫!我在叫!")

父类方法扩展

有时仅需对父类方法进行扩展无需完全重写,只需在重写方法时加上super().父类方法 即可:

class xiaotianquan(Dog):

#扩展继承自父类的bark()方法

def bark(self):

#继承父类的方法

super().bark() #此时super()即代表父类(此时的父类为Dog)

#需要拓展的代码

print("我在叫!我在叫!")

super类是一个特殊的类,super()代表着一个super类的实例

Python2.x版本调用父类方法(了解,不推荐)

在Python2.x版本中,子类重写或拓展父类方法时,不是使用super()调用,而是使用:父类名.父类方法(self) #注意,self不能省略

class xiaotianquan(Dog):

#扩展继承自父类的bark()方法

def bark(self):

#继承父类的方法

Dog.bark(self) #self不能省略

#需要拓展的代码

print("我在叫!我在叫!")

注意:super().方法名 与 父类名.方法名(self),开发中不能混用,只能使用一种,且推荐super().方法名这种

父类的私有属性和方法的调用

子类无法直接访问父类的私有属性(可以但不推荐),但可以通过父类中的公共方法来调用私有属性和方法:

class A:

def __init__(self):

self.__age = 18

def __fuck(self):

print("你不能搞我")

def get_age(self):

return self.__age

def force(self):

self.__fuck()

class B(A):

def __init__(self):

super().__init__() #非常重要!!没有这行代码就没有继承自父类的_A__age属性

name = "xiaoli"

xiaoli = B()

print(xiaoli.get_age())

xiaoli.force()

运行结果:

E:\python3\python3.exe F:/PycharmProjects/project3-class/xh_13_调用父类方法中的私有属性和方法.py

18

你不能搞我

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值