Python中重写父类方法的几种实现方式
作者:吹吹风会发光
时间:2023-04-27
来源:互联网
浏览:0
1.基础应用classAnimal(object):defeat(self):print("动物吃东西")classCat(Animal):defeat(self):print("猫吃鱼")#格式一:父类名.方法名(对象)Animal.eat(self)#格式二:super(本类名,对象).方法名()super(Cat,self).eat()#格式三:super()方法名()super().eat()cat1=Cat()cat1.eat()print(cat1)2.实际应用#用元类实现单例模式classS
1.基础应用
class Animal(object):
def eat(self):
print("动物吃东西")
class Cat(Animal):
def eat(self):
print("猫吃鱼")
# 格式一:父类名.方法名(对象)
Animal.eat(self)
# 格式二:super(本类名,对象).方法名()
super(Cat, self).eat()
# 格式三:super()方法名()
super().eat()
cat1 = Cat()
cat1.eat()
print(cat1)2.实际应用
#用元类实现单例模式
class SingletonType(type):
instance = {}
def __call__(cls, *args, **kwargs):
if cls not in cls.instance:
# 方式一:
# cls.instance[cls] = type.__call__(cls, *args, **kwargs)
# 方式二
# cls.instance[cls] = super(SingletonType, cls).__call__(*args, **kwargs)
# 方式三
cls.instance[cls] = super().__call__(*args, **kwargs)
return cls.instance[cls]
class Singleton(metaclass=SingletonType):
def __init__(self, name):
self.name = name
s1 = Singleton('1')
s2 = Singleton('2')
print(id(s1) == id(s2))3.注意
1.当一个类存在多继承时,它继承的多个父类有相同的父类A,在重写其父类时需要注意
方法一:父类名.方法名(对象)
父类A会被调用多次(根据继承的个数)
重写父类时根据需要传递所需要的参数
方法二:super(本类名,对象).方法名()
父类A也只会被调用一次
重写父类方法必须传递所有参数
2.当一个类存在继承,且已经在子类中重写相应的变量,改变父类的变量不会对子类有影响
class Parent(object): x = 1 class Child1(Parent): pass class Child2(Parent): pass print(Parent.x, Child1.x, Child2.x) Child1.x = 2 print(Parent.x, Child1.x, Child2.x) Parent.x = 3 print(Parent.x, Child1.x, Child2.x)
输出结果
1 1 1
1 2 1
3 2 3
作者最新文章
PDF怎么取消密码保护?4种解锁方法整理
2026-09-08 18:23
三星 Galaxy Z Fold8 内屏边角支撑偏软?实测与官方回应
2026-09-08 16:39
手机Excel表格制作教程:小屏幕高效录入与格式调整指南
2026-09-04 09:27
PDF文档按页转换成图片怎么做?在线转换步骤整理
2026-09-03 11:06
PDF转Excel操作指南:在线工具、Adobe与Excel内置功能详解
2026-09-02 19:08
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















