Python零基礎入門十四之繼承
在之前的部落格中簡單地說了關於類別的繼承的語法,今天在具體的說一下類別的相關的知識。
先用一段程式碼溫習一下之前學過的類別的繼承:
class Parent: def hello(self): print("正在调用父类的方法.....")class Child(Parent): # pass def hello(self): print("正在调用子类的方法.....") p=Parent() p.hello() c=Child() c.hello()
在類別的繼承中需要注意的幾個問題:
(1)如果子類別中定義與父類別同名的方法或屬性則會自動覆寫父類別對應的方法或屬性。
import random as rclass Fish: def __init__(self): self.x=r.randint(0,10) self.y=r.randint(0,10) def move(self): self.x-=1 print("我的位置是:",self.x,self.y)class Goldfish(Fish): passclass Carp(Fish): passclass Salmon(Fish): passclass Shark(Fish): def __init__(self): #调用未绑定的父类方法,传进去的是子类的实例化对象 #Fish.__init__(self) #使用super()函数 super().__init__() self.hungry=True def eat(self): if self.hungry: print("吃货的梦想是天天有的吃") self.hungry=False else: print("太撑了,吃不下了") shark=Shark() shark.move()#这样写的话程序会报错,因为子类Shark重写了了#__init__方法,这样就会覆盖父类的__init__方法
(2)Python也支援多重繼承
class Base1: def foo1(self): print("我是foo1,我为Base1代言...")class Base2: def foo2(self): print("我是foo2,我为Base2代言...")class C(Base1,Base2): passc=C() c.foo1() c.foo2()
(3)當幾個類別之間沒有直接的繼承關係時我們可以使用組合。
例如下面程式碼中的Turtle、Fish、Pool三個類,它們之間並沒有明顯的繼承關係,但是使用組合卻可以很方便的解決這幾個類別之間的問題。下面程式碼就解決了輸出池塘中有多少隻金魚和烏龜的問題。主要解決方法就是將烏龜和金魚類的實例化放進池塘的類中。
class Turtle: def __init__(self,x): self.num=xclass Fish: def __init__(self,x): self.num=xclass Pool: def __init__(self,x,y): #将类的实例化放到另一个类中 self.turtle=Turtle(x) self.fish=Fish(y) def print_num(self): print("水池里总共有乌龟%d只,小鱼%d条!"%(self.turtle.num,self.fish.num)) pool=Pool(1,10) pool.print_num()
最後補充一些關於類別的內建函數:
#前面是子类,后面是基类 #issubclass(class,classinfo) #判断一个类是否为另一个类的子类 #一个类被认为是自身的子类class A: passclass B(A): passprint(issubclass(B,A)) #isinstance(object,classinfo) #前面是一个实例化对象,后面是类#检查实例对象是否属于这个类b1=B(); print(isinstance(b1,B)) #hasattr(object,name) #测试一个对象是否有特定的属性class C: def __init__(self,x=0): self.x=x#一定要注意Python没有变量的定义c1=C() print(hasattr(c1,"x")) #getattr(object,name[,default]) #返回对象指定的属性值,如果不存在,打印设置的默认值print(getattr(c1,'x')) print(getattr(c1,'y',"您访问的参数不存在")) #setattr(object,name,value) #设定属性的值,如果不存在,会自动新建setattr(c1,"y","Yaoxiangxi") print(getattr(c1,'y',"您访问的参数不存在"))#delattr(object,name) #删除属性delattr(c1,'y') #property(fget=None,fset=None,fdel=None,doc=None) #通过属性设置属性class C: def __init__(self,size=10): self.size=size def getSize(self): return self.size def setSize(self,value): self.size=value def delSize(self): del self.size #删除某个属性 #便于代码的修改 x=property(getSize,setSize,delSize) c1=C() print(c1.getSize()) print(c1.x) c1.x=100print(c1.x)
關於最後的property將在描述符的部落格中做詳細的解釋。
以上就是Python零基礎入門十四之繼承的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

在PHPOOP中,self::引用當前類,parent::引用父類,static::用於晚靜態綁定。 1.self::用於靜態方法和常量調用,但不支持晚靜態綁定。 2.parent::用於子類調用父類方法,無法訪問私有方法。 3.static::支持晚靜態綁定,適用於繼承和多態,但可能影響代碼可讀性。

HadiDB:輕量級、高水平可擴展的Python數據庫HadiDB(hadidb)是一個用Python編寫的輕量級數據庫,具備高度水平的可擴展性。安裝HadiDB使用pip安裝:pipinstallhadidb用戶管理創建用戶:createuser()方法創建一個新用戶。 authentication()方法驗證用戶身份。 fromhadidb.operationimportuseruser_obj=user("admin","admin")user_obj.

直接通過 Navicat 查看 MongoDB 密碼是不可能的,因為它以哈希值形式存儲。取回丟失密碼的方法:1. 重置密碼;2. 檢查配置文件(可能包含哈希值);3. 檢查代碼(可能硬編碼密碼)。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

作為數據專業人員,您需要處理來自各種來源的大量數據。這可能會給數據管理和分析帶來挑戰。幸運的是,兩項 AWS 服務可以提供幫助:AWS Glue 和 Amazon Athena。

啟動 Redis 服務器的步驟包括:根據操作系統安裝 Redis。通過 redis-server(Linux/macOS)或 redis-server.exe(Windows)啟動 Redis 服務。使用 redis-cli ping(Linux/macOS)或 redis-cli.exe ping(Windows)命令檢查服務狀態。使用 Redis 客戶端,如 redis-cli、Python 或 Node.js,訪問服務器。

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。
