人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)
python 面向?qū)ο笕筇卣髟斀?/h1>
發(fā)布日期:2021-12-18 10:34 | 文章來源:源碼之家

一、面向?qū)ο笕筇卣鹘榻B

Python 是面向?qū)ο蟮恼Z言,也支持面向?qū)ο缶幊痰娜筇匦裕豪^承、封裝(隱藏)、多態(tài)。

1、封裝(隱藏)

隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),只對外提供必要的方法。

通過“私有屬性、私有方法”的方式,實(shí)現(xiàn)“封裝”。Python 追求簡潔的語法

2、繼承

繼承可以讓子類具有父類的特性,提高了代碼的重用性。從設(shè)計上是一種增量進(jìn)化,原有父類設(shè)計不變的情況下,可以增加新的功能,或者改進(jìn)已有的算法。

3、多態(tài)

多態(tài)是指同一個方法調(diào)用由于對象不同會產(chǎn)生不同的行為。生活中這樣的例子比比皆是:同樣是休息方法,人不同休息方法不同。張三休息是睡覺,李四休息是玩游戲,程序員休息是“敲幾行代碼”。

二、繼承

繼承是面向?qū)ο蟪绦蛟O(shè)計的重要特征,也是實(shí)現(xiàn)“代碼復(fù)用”的重要手段。
如果一個新類繼承自一個設(shè)計好的類,就直接具備了已有類的特征,就大大降低了工作
難度。已有的類,我們稱為“父類或者基類”,新的類,我們稱為“子類或者派生類”。

1、語法格式

Python 支持多重繼承,一個子類可以繼承多個父類。繼承的語法格式如下:

class 子類類名(父類 1[,父類 2,...]):

類體:如果在類定義中沒有指定父類,則默認(rèn)父類是 object 類。也就是說,object 是所有類的父類,里面定義了一些所有類共有的默認(rèn)實(shí)現(xiàn),比如:__new__()。

定義子類時,必須在其構(gòu)造函數(shù)中調(diào)用父類的構(gòu)造函數(shù)。調(diào)用格式如下:

父類名.__init__(self, 參數(shù)列表)

class Person:
 def __init__(self,name,age):
  self.name = name
  self.__age = age
 def say_age(self):
  print("年齡是:",self.__age)
class Student(Person):
 def __init__(self,name,age,grade):
  self.grade = grade
  Person.__init__(self,name,age) 
# 構(gòu)造函數(shù)中包含調(diào)用父類構(gòu)造函數(shù)。根據(jù)需要,不是必須。 子類并不會自動調(diào)用父類的__init__(),我
# 們必須顯式的調(diào)用它。
if __name__ == '__main__':
 s=Student('諸葛',18,1)
 s.say_age()

2、類成員的繼承和重寫

1. 成員繼承:子類繼承了父類除構(gòu)造方法之外的所有成員。

2. 方法重寫:子類可以重新定義父類中的方法,這樣就會覆蓋父類的方法,也稱為“重寫”

class Person:
 def __init__(self,name,age):
  self.name = name
  self.__age = age
 def say_age(self):
  print("年齡是:",self.__age)
class Student(Person):
 def __init__(self,name,age,grade):
  self.grade = grade
  Person.__init__(self,name,age) 
 def say_age(self):
  print(self.name,"的年齡是:",self.age)
# 構(gòu)造函數(shù)中包含調(diào)用父類構(gòu)造函數(shù)。根據(jù)需要,不是必須。 子類并不會自動調(diào)用父類的__init__(),我
# 們必須顯式的調(diào)用它。
if __name__ == '__main__':
 s=Student('諸葛',18,1)
 s.say_age()

3、super()獲得父類定義

在子類中,如果想要獲得父類的方法時,我們可以通過 super()來做。

super()代表父類的定義,不是父類對象。

class A:
 def say(self):
  print("A: ",self)
  print("say AAA")
class B(A):
 def say(self):
  #A.say(self) 調(diào)用父類的 say 方法
  super().say() #通過 super()調(diào)用父類的方法
  print("say BBB")
if __name__ =="__main__:
 b = B()
 b.say()

4、設(shè)計模式_工廠模式實(shí)現(xiàn)

工廠模式實(shí)現(xiàn)了創(chuàng)建者和調(diào)用者的分離,使用專門的工廠類將選擇實(shí)現(xiàn)類、創(chuàng)建對象進(jìn)行統(tǒng)一的管理和控制。

class CarFactory:
 def createCar(self,brand):
  if brand == "1":
return one()
  elif brand == "2":
return two()
  elif brand == '3':
return three()
  else:
return "未知品牌,無法創(chuàng)建"
class one:
 pass
class two:
 pass
class three:
 pass
factory = CarFactory()
c1 = factory.createCar("1")
c2 = factory.createCar("2")
print(c1)
print(c2)

5、設(shè)計模式_單例模式實(shí)現(xiàn)

單例模式(Singleton Pattern)的核心作用是確保一個類只有一個實(shí)例,并且提供一個訪問該實(shí)例的全局訪問點(diǎn)。

單例模式只生成一個實(shí)例對象,減少了對系統(tǒng)資源的開銷。當(dāng)一個對象的產(chǎn)生需要比較多的資源,如讀取配置文件、產(chǎn)生其他依賴對象時,可以產(chǎn)生一個“單例對象”,然后永久駐留內(nèi)存中,從而極大的降低開銷。

class One:
 __obj = None#  用于存儲這個單例
 __init_flag = True
 def __new__(cls, *args, **kwargs):
# 指的是One這個類里面的  類屬性
if cls.__obj == None:
# object 是類的默認(rèn)父類
 cls.__obj = object.__new__(cls)
return cls.__obj
 def __init__(self,name):
  if One.__init_flag:
print( "init....")
self.name = name
One.__init_flag = False
if __name__=='__main__':
 a = One( "aa")
 print(a)
 b = One( "bb")
 print(b)

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部