最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python類的基礎(chǔ)入門知識

 更新時間:2008年11月24日 20:35:28   作者:  
關(guān)于類的定義
復(fù)制代碼 代碼如下:

class Account(object):
"一個簡單的類"
account_type="Basic"
def __init__(self,name,balance):
"初始化一個新的Account實例"
self.name=name
self.balance=balance
def deposit(self,amt):
"存款"
self.balance=self.balance+amt
def withdraw(self,amt):
"取款"
self.balance=self.balance-amt
def inquiry(self):
"返回當(dāng)前余額"
return self.balance

其中,__init__函數(shù)就是Python中的構(gòu)造函數(shù)。另外,balance這個變量是類實例的變量。
另外,在python中類中定義成員函數(shù)一般第一個參數(shù)總是self,表示自已的實例,與C++中的this指針差不多,不過C++中的this指針是隱函于其中并全局可見的,而在Python中卻要作為參數(shù)傳進(jìn)去, 這是Python中定義類的另一個特點。
還有一個特點,在類的成員函數(shù)中,使用類中的另一個成員函數(shù),前面必須要指定類名,如下:
復(fù)制代碼 代碼如下:

class Foo(object):
def bar(self):
print "bar!"
def spam(self):
bar(self) # 錯誤,引發(fā)NameError, 可以是:self.bar
Foo.bar(self) # 合法的

2.在類中聲時靜態(tài)方法并使用靜態(tài)方法
要在類中使用靜態(tài)方法,需在類成員函數(shù)前面加上@staticmethod標(biāo)記符,以表示下面的成員函數(shù)是靜態(tài)函數(shù)。使用靜態(tài)方法的好處是,不需要定義實例即可使用這個方法:另外,多個實例共享此靜態(tài)方法,如下: 
復(fù)制代碼 代碼如下:

class SimClass():
@staticmethod
def ShareStr():
print "This is a static Method"
SimClass.ShareStr() #使用靜態(tài)函數(shù)

3.類方法:
類方法與普通的成員函數(shù)和靜態(tài)函數(shù)有不同之處,在接觸的語言中好像也沒見過這種語義,看它的定義:
一個類方法就可以通過類或它的實例來調(diào)用的方法, 不管你是用類來調(diào)用這個方法還是類實例調(diào)用這個方法,該方法的第一個參數(shù)總是定義該方法的類對象。
記住:方法的第一個參數(shù)都是類對象而不是實例對象.
按照慣例,類方法的第一個形參被命名為 cls. 任何時候定義類方法都不是必須的(類方法能實現(xiàn)的功能都可以通過定義一個普通函數(shù)來實現(xiàn),只要這個函數(shù)接受一個類對象做為參數(shù)就可以了).
定義類方法并使用類方法:
復(fù)制代碼 代碼如下:

class ABase(object):
@classmethod #類方法修飾符
def aclassmet(cls): print 'a class method for', cls.__name__
class ADeriv(ABase): pass
bInstance = ABase( )
dInstance = ADeriv( )
ABase.aclassmet( ) # prints: a class method for ABase
bInstance.aclassmet( ) # prints: a class method for ABase
ADeriv.aclassmet( ) # prints: a class method for ADeriv
dInstance.aclassmet( ) # prints: a class method for ADeriv

也就是說,類方法并不是必須的,使用普通函數(shù)也可以實現(xiàn)類方法的功能。
4.類的繼承
在python中,繼承一個類,就像這樣:
class A(object) #繼承object類
#.......
class B(A) #繼承A類
#........
另外,python中支持多繼承,對于多繼承,找某個對應(yīng)的函數(shù),其python有相應(yīng)的方法,如: 
復(fù)制代碼 代碼如下:

class D(oject): pass #D繼承自object
class B(D): #B是D的子類
varB = 42
def method1(self):
print "Class B : method1"
class C(D): #C也是D的子類
varC = 37
def method1(self):
print "Class C : method1"
def method2(self):
print "Class C : method2"
class A(B,C): #A是B和C的子類
varA = 3.3
def method3(self):
print "Class A : method3"

如果我要調(diào)用A.method1() ,會出現(xiàn)什么結(jié)果?答案是ClassB:method1. 書上是只樣介紹的:
當(dāng)搜索在基類中定義的某個屬性時,Python采用深度優(yōu)先的原則、按照子類定義中的基類順序進(jìn)行搜索。**注意**(new-style類已經(jīng)改變了這種行為)。上邊例子中,如果訪問 A.varB ,就會按照A-B-D-C-D這個順序進(jìn)行搜索,只要找到就停止搜索.若有多個基類定義同一屬性的情況,則只使用第一個被找到屬性值:
5.數(shù)據(jù)隱藏
在python中實現(xiàn)數(shù)據(jù)隱藏很簡單,不需要在前面加什么關(guān)鍵字,只要把類變量名或成員函數(shù)前面加兩個下劃線即可實現(xiàn)數(shù)據(jù)隱藏的功能,這樣,對于類的實例來說,其變量名和成員函數(shù)是不能使用的,對于其類的繼承類來說,也是隱藏的,這樣,其繼承類可以定義其一模一樣的變量名或成員函數(shù)名,而不會引起命名沖突。
復(fù)制代碼 代碼如下:

class A:
def __init__(self):
self.__X = 3 # self._A__X
class B(A):
def __init__(self):
A.__init__(self)
self.__X = 37 # self._B__X

相關(guān)文章

  • python win32 簡單操作方法

    python win32 簡單操作方法

    下面小編就為大家?guī)硪黄猵ython win32 簡單操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Python中的迭代和列表生成式

    Python中的迭代和列表生成式

    這篇文章主要介紹了Python中的迭代和列表生成式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教<BR>
    2024-02-02
  • Python學(xué)習(xí)之用pygal畫世界地圖實例

    Python學(xué)習(xí)之用pygal畫世界地圖實例

    這篇文章主要介紹了Python學(xué)習(xí)之用pygal畫世界地圖實例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • python?OpenCV圖像金字塔

    python?OpenCV圖像金字塔

    這篇文章主要介紹了python?OpenCV圖像金字塔,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python heapq庫案例詳解

    Python heapq庫案例詳解

    這篇文章主要介紹了Python heapq庫案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Python強(qiáng)化練習(xí)之Tensorflow2 opp算法實現(xiàn)月球登陸器

    Python強(qiáng)化練習(xí)之Tensorflow2 opp算法實現(xiàn)月球登陸器

    在面向?qū)ο蟪霈F(xiàn)之前,我們采用的開發(fā)方法都是面向過程的編程(OPP)。面向過程的編程中最常用的一個分析方法是“功能分解”。我們會把用戶需求先分解成模塊,然后把模塊分解成大的功能,再把大的功能分解成小的功能,整個需求就是按照這樣的方式,最終分解成一個一個的函數(shù)
    2021-10-10
  • Python字符串檢索方式

    Python字符串檢索方式

    文章介紹了Python中字符串查找的六種方法:count()、find()、index()、rindex()、startswith()和endswith(),并詳細(xì)解釋了每個方法的語法和運(yùn)行結(jié)果
    2024-11-11
  • python解釋模型庫Shap實現(xiàn)機(jī)器學(xué)習(xí)模型輸出可視化

    python解釋模型庫Shap實現(xiàn)機(jī)器學(xué)習(xí)模型輸出可視化

    Shap 是一個開源的 python 庫,用于解釋模型。它可以創(chuàng)建多種類型的可視化,有助于了解模型和解釋模型是如何工作的。在本文中,我們將會分享一些Shap創(chuàng)建的不同類型的機(jī)器學(xué)習(xí)模型可視化
    2021-11-11
  • pytorch 中的重要模塊化接口nn.Module的使用

    pytorch 中的重要模塊化接口nn.Module的使用

    這篇文章主要介紹了pytorch 中的重要模塊化接口nn.Module的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python控制臺輸出時刷新當(dāng)前行內(nèi)容而不是輸出新行的實現(xiàn)

    Python控制臺輸出時刷新當(dāng)前行內(nèi)容而不是輸出新行的實現(xiàn)

    今天小編就為大家分享一篇Python控制臺輸出時刷新當(dāng)前行內(nèi)容而不是輸出新行的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論

潜江市| 舒城县| 长岭县| 江安县| 涿鹿县| 原平市| 体育| 四子王旗| 望奎县| 白山市| 遵义市| 泸水县| 霍邱县| 宝鸡市| 兰西县| 石阡县| 河东区| 新丰县| 藁城市| 盐城市| 合川市| 米泉市| 二连浩特市| 木兰县| 丽江市| 林西县| 土默特右旗| 鄂州市| 庆阳市| 萍乡市| 江陵县| 资中县| 澄江县| 浪卡子县| 延寿县| 香河县| 邵阳市| 祁门县| 沛县| 陵川县| 永清县|