Python學習筆記二 物件導向 類 方法 屬性

2021-09-01 07:31:12 字數 3274 閱讀 2181

參考:

函式的定義

class

python中的類沒有什麼public、private、protect

建構函式、析構函式

__init__(self)

__del__(self)

類的靜態變數

class student

name="abc"

這東西其實就是相當於c#中的靜態變數,但這裡要注意是,初始化類的靜態變數是這樣的(diveintopython中的例子)

class counter:

count = 0                    

def __init__(self):

self.__class__.count += 1

例項的成員變數

class student

def __init__(self)

self.name = "abc"

屬性定義(類從object繼承,但好像不是必須的,因為下面的**也可以正常使用)

class student:

def __init__(self):

self.__name="abc"

def getname(self):

return self.__name

def setname(self,value):

self.__name = value

def delname(self):

del self.__name

name = property(getname,setname,delname,'student name')

說實話,當我寫完這段**的時候,我就不想使用屬性了。這樣定義起來也太不方便了,還要從object中繼承。而且現在c#中,可以很簡單的通過get、set來實現屬性了。目前沒有找到好的理由使用屬性

唯讀屬性(類必須從object繼承,否則就不是唯讀的)

class parrot(object):

def __init__(self):

self._voltage = 100000

@property

def voltage(self):

"""get the current voltage."""

return self._voltage

私有變數

class student:

def __init__(self):

self.__name="abc"

很簡單就是通過__ 兩個下劃線開頭,但不是結尾的。就是私有了

私有方法

class student:

def __getage(self):

pass

和私有的變數一樣,你可以嘗試一下直接呼叫,編譯器會有相應的提示

強制訪問私有方法、變數

"私有"事實上這只是一種規則,我們依然可以用特殊的語法來訪問私有成員。

上面的方法,我們就可以通過_類名來訪問

aobj = student()

aobj._student__name

aobj._student__getage()

靜態方法

class class1: 

@staticmethod 

def test(): 

print "in static method..." 

方法過載

python是不支援方法過載,但是你**了可以寫。python會使用位置在最後的乙個。我覺得這可能以python儲存這些資訊通過__dict__ 有關,它就是乙個dict。key是不能相同的。所以也就沒辦法出現兩個gogo 方法呼叫

class student:

def gogo(self,name):

print name

def gogo(self):

print "default"

呼叫的時候你只能使用 obj.gogo()這個方法。

一些特殊方法

__init__(self)  建構函式

__del__ (self)  析構函式

__repr__( self)   repr()

__str__( self)    print語句 或 str()

運算子過載

__lt__( self, other)

__le__( self, other)

__eq__( self, other)

__ne__( self, other)

__gt__( self, other)

__ge__( self, other)

這東西太多了。大家還是自己看python自帶幫助吧。

一些特殊屬性

當你定義乙個類和呼叫類的例項時可以獲得的一些預設屬性

class student:

'''this test class'''

name = 'ss'

def __init__(self):

self.name='bb'

def run(self):

'''people run'''

@staticmethod 

def runstatic(): 

print "in static method..."

print student.__dict__ #類的成員資訊

print student.__doc__  #類的說明

print student.__name__ #類的名稱

print student.__module__ #類所在的模組

print student.__bases__ #類的繼承資訊

obj = student()

print dir(obj)

print obj.__dict__ #例項的成員變數資訊(不太理解python的這個模型,為什麼run這個函式確不再dict中)

print obj.__doc__  #例項的說明

print obj.__module__ #例項所在的模組

print obj.__class__ #例項所在的類名

Python物件導向學習筆記(二)

在使用面相物件開發前,應該首先分析需求,確定一下,程式中需要包含哪些類!在程式開發中,要設計乙個類,通常需要滿足一下三個要素 類名這類事物的名字,滿足大駝峰命名法屬性這類事物具有什麼樣的特徵 方法這類事物具有什麼樣的行為 capwords 每乙個單詞的首字母大寫 單詞與單詞之間沒有下劃線 名詞提煉法...

python學習(二) 物件導向

物件導向的方法簡介 類 class 方法重寫 override 繼承 例項化 類的方法必須要加乙個self引數 class classname def init self name salary self 是指類的例項而不是類 self name name 建立類物件 x class1 這是通過呼叫...

Python學習筆記 物件導向

物件導向 oop 基本概念 物件導向程式設計 object oriented programming簡寫 oop 1 物件導向基本概念 之前的學習程式設計方式就是面向過程的 面向過程和物件導向,是兩種不同的程式設計方式 對比面向過程的特點,可以更好的了解什麼是物件導向 2 過程和函式 科普 過程是最...