Python重写父类的三种方法小结

 更新时间:2023年03月28日 11:05:43   作者:小Pawn爷  
本文主要介绍了Python重写父类的三种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

到此这篇关于Python重写父类的三种方法小结的文章就介绍到这了,更多相关Python重写父类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 30行代码实现蚂蚁森林自动偷能量

    python 30行代码实现蚂蚁森林自动偷能量

    这篇文章主要介绍了python 30行代码实现蚂蚁森林自动偷能量的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • pytorch使用过程中遇到的错误处理之内存溢出问题

    pytorch使用过程中遇到的错误处理之内存溢出问题

    这篇文章主要介绍了pytorch使用过程中遇到的错误处理之内存溢出问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python 与c++相互调用实现

    python 与c++相互调用实现

    这篇文章主要介绍了python 与c++相互调用实现,我们都知道c++运算速度快于python,python又简单易写,很多人就会想到将两者结合,接下俩小编要给大家介绍的就是python 与c++相互调用实现,,需要的朋友可以参考一下
    2022-03-03
  • Python中AI图像识别实现身份证识别

    Python中AI图像识别实现身份证识别

    图像识别说白了就是把一张照片上面的文字进行提取,提供工作效率,本文主要介绍了Python 身份证识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 深入解读python字符串函数

    深入解读python字符串函数

    这篇文章主要为大家介绍了python字符串函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 用python给csv里的数据排序的具体代码

    用python给csv里的数据排序的具体代码

    在本文里小编给大家分享的是关于用python给csv里的数据排序的具体代码内容,需要的朋友们可以学习下。
    2020-07-07
  • Django+boostrap 美化admin后台的操作

    Django+boostrap 美化admin后台的操作

    这篇文章主要介绍了Django+boostrap 美化admin后台的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python数据可视化之分析热门话题“丁克家庭都怎么样了”

    Python数据可视化之分析热门话题“丁克家庭都怎么样了”

    今天小编就以一个数据分析师的视角来向大家讲述一下年轻人群体对于丁克的态度以及那些丁克家庭他们的想法是怎么样的?他们是否有过后悔当初的决定,需要的朋友可以参考下
    2021-06-06
  • Python 脚本的三种执行方式小结

    Python 脚本的三种执行方式小结

    今天小编就为大家分享一篇Python 脚本的三种执行方式小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python实现快速提取Word表格并转Markdown

    Python实现快速提取Word表格并转Markdown

    这篇文章主要为大家详细介绍了一套Python零基础可操作的代码方案,帮助测试工程师3分钟内完成表格提取与转换,直接对接自动化测试或大模型,需要的小伙伴可以参考下
    2025-04-04

最新评论