Python重寫父類的三種方法小結(jié)
1.基礎(chǔ)應(yīng)用
class Animal(object):
? ? def eat(self):
? ? ? ? print("動(dòng)物吃東西")
class Cat(Animal):
? ? def eat(self):
? ? ? ? print("貓吃魚")
? ? ? ? # 格式一:父類名.方法名(對(duì)象)
? ? ? ? Animal.eat(self)
? ? ? ? # 格式二:super(本類名,對(duì)象).方法名()
? ? ? ? super(Cat, self).eat()
? ? ? ? # 格式三:super()方法名()
? ? ? ? super().eat()
cat1 = Cat()
cat1.eat()
print(cat1)2.實(shí)際應(yīng)用
#用元類實(shí)現(xiàn)單例模式
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.當(dāng)一個(gè)類存在多繼承時(shí),它繼承的多個(gè)父類有相同的父類A,在重寫其父類時(shí)需要注意
方法一:父類名.方法名(對(duì)象)
- 父類A會(huì)被調(diào)用多次(根據(jù)繼承的個(gè)數(shù))
- 重寫父類時(shí)根據(jù)需要傳遞所需要的參數(shù)
方法二:super(本類名,對(duì)象).方法名()
- 父類A也只會(huì)被調(diào)用一次
- 重寫父類方法必須傳遞所有參數(shù)
2.當(dāng)一個(gè)類存在繼承,且已經(jīng)在子類中重寫相應(yīng)的變量,改變父類的變量不會(huì)對(duì)子類有影響
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)
輸出結(jié)果
1 1 1
1 2 1
3 2 3
到此這篇關(guān)于Python重寫父類的三種方法小結(jié)的文章就介紹到這了,更多相關(guān)Python重寫父類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 30行代碼實(shí)現(xiàn)螞蟻森林自動(dòng)偷能量
這篇文章主要介紹了python 30行代碼實(shí)現(xiàn)螞蟻森林自動(dòng)偷能量的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-02-02
pytorch使用過程中遇到的錯(cuò)誤處理之內(nèi)存溢出問題
這篇文章主要介紹了pytorch使用過程中遇到的錯(cuò)誤處理之內(nèi)存溢出問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
python?與c++相互調(diào)用實(shí)現(xiàn)
這篇文章主要介紹了python?與c++相互調(diào)用實(shí)現(xiàn),我們都知道c++運(yùn)算速度快于python,python又簡(jiǎn)單易寫,很多人就會(huì)想到將兩者結(jié)合,接下倆小編要給大家介紹的就是python?與c++相互調(diào)用實(shí)現(xiàn),,需要的朋友可以參考一下2022-03-03
Python中AI圖像識(shí)別實(shí)現(xiàn)身份證識(shí)別
圖像識(shí)別說白了就是把一張照片上面的文字進(jìn)行提取,提供工作效率,本文主要介紹了Python 身份證識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
用python給csv里的數(shù)據(jù)排序的具體代碼
在本文里小編給大家分享的是關(guān)于用python給csv里的數(shù)據(jù)排序的具體代碼內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-07-07
Django+boostrap 美化admin后臺(tái)的操作
這篇文章主要介紹了Django+boostrap 美化admin后臺(tái)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-03-03
Python數(shù)據(jù)可視化之分析熱門話題“丁克家庭都怎么樣了”
今天小編就以一個(gè)數(shù)據(jù)分析師的視角來(lái)向大家講述一下年輕人群體對(duì)于丁克的態(tài)度以及那些丁克家庭他們的想法是怎么樣的?他們是否有過后悔當(dāng)初的決定,需要的朋友可以參考下2021-06-06
Python實(shí)現(xiàn)快速提取Word表格并轉(zhuǎn)Markdown
這篇文章主要為大家詳細(xì)介紹了一套Python零基礎(chǔ)可操作的代碼方案,幫助測(cè)試工程師3分鐘內(nèi)完成表格提取與轉(zhuǎn)換,直接對(duì)接自動(dòng)化測(cè)試或大模型,需要的小伙伴可以參考下2025-04-04

