Python高階(一) 物件導向

2021-10-09 18:22:29 字數 4253 閱讀 5676

定義

程式設計的正規化

抽象並建立物件模型

使用

# 定義與例項化

class

animal

:pass

#python2 只繼承少部分內建函式

class

animal()

:pass

class

animal

(object):

pass

dog = animal(

)# 例項屬性的定義

dog.name =

'xiaowang'

dog.age =

14print dog.name,dog.age

# 例項屬性的初始化

class

animal()

:def

__init__

(self,name,age)

:#self不可漏掉

self.name = name

self.age = age

dog = animal(

'xiaowang',16

)cat = animal(

'xiaochen',17

)print dog.name,dog.age

print cat.name,cat.age

# 類屬性

class

animal

(object):

localtion =

'asia'

def__init__

(self, name, age)

: self.name = name

self.age = age

dog = animal(

'wangwang',1

)cat = animal(

'mimi',3

)print dog.localtion # ==> asia

print cat.localtion # ==> asia

print animal.localtion # ==> asia 類屬性,也可以通過類名直接訪問

animal.localtion =

'africa'

#動態修改

print

(cat.localtion)

# ==>africa

print

(dog.localtion)

# ==>africa

# 類屬性與例項屬性

​class

animal

(object):

localtion =

'asia'

def__init__

(self, name, age, localtion)

: self.name = name

self.age = age

self.localtion = localtion

'''例項屬性優先順序高於類屬性

不可通過例項屬性修改類屬性,只會給例項繫結對應的屬性

'''# 私有屬性

# 類私有屬性

class

animal

(object):

__localtion =

'asia'

# 例項私有屬性

class

animal

(object):

def__init__

(self, name, age, localtion)

: self.name = name

self.age = age

self.__localtion = localtion

dog = animal(

'wangwang',1

,'guangdong'

)print

(dog.name)

# ==> wangwang

print

(dog.age)

# ==> 1

print

(dog.__localtion)

'''在外部訪問私有屬性將會丟擲異常,提示沒有這個屬性。

雖然私有屬性無法從外部訪問,但是,從類的內部是可以訪問的。私有屬性是為了保護類或例項屬性不被外部汙染而設計的。

''''''定義例項方法

例項的方法指的就是在類中定義的函式,例項方法的第乙個引數永遠都是self,self是乙個引用,指向呼叫該方法的例項物件本身,除此以外,其他引數和普通函式是完全一樣的。

'''class

animal

(object):

__kinds =

'2'def

__init__

(self, name, age, localtion)

: self.__name = name

self.__age = age

self.__localtion = localtion

defset_name

(self,name)

: self.__name = name

defset_age

(self,age)

: self.__age = age

defset_localtion

(self,localtion)

: self.__localtion = localtion

defget_name

(self)

:return self.__name

defget_age

(self)

:return self.__age

defget_localtion

(self)

:return self.__localtion

defget_kind

(self)

:return animal.__kinds #self.__kinds則是例項私有屬性

defget_info

(self)

:return

'name = {}, age = {}, localtion = {}'

.format

(self.__name, self.__age, self.__localtion)

dog = animal(

'wangwang',1

,'guangdong'

)print dog.get_name(

)print dog.get_age(

)print dog.get_localtion(

)print dog.get_kind(

)print dog.get_info(

)'''

在上面的定義,name是例項的私有屬性,從外部是無法訪問的,而get_name(self) 就是乙個例項方法,在例項方法裡面是可以操作私有屬性的,注意,它的第乙個引數是self。

另外,__init__(self, name)其實也可看做是乙個特殊的例項方法。

注意,在外部呼叫例項方法時,是不需要顯式傳遞self引數的。

另外,通過定義例項方法來操作私有屬性的這種方法是推薦的,這種資料封裝的形式除了能保護內部資料一致性外,還可以簡化外部呼叫的難度。

''''''定義類方法

1、類方法需要使用@classmethod來標記為類方法,否則定義的還是例項方法

2、類方法的第乙個引數將傳入類本身,通常將引數名命名為 cls,下面的 cls.__count 實際上相當於animal.__count。

此外,因為是在類上呼叫,而非例項上呼叫,因此類方法無法獲得任何例項變數,只能獲得類的引用。

'''class

animal()

: __count =

10def

__init__

(self,name,age)

: self.name = name

self.age = age

@classmethod

defset_count

(cls,count)

: cls.__count = count

@classmethod

defget_count

(cls)

:return cls.__count

print animal.get_count(

)

python物件導向(一) 物件導向基礎

物件導向是python中乙個重點知識,用物件導向的思想程式設計,有利於模組化 方便閱讀和後期的維護。面向過程 注重解決問題的步驟,讓問題根據步驟流程一步一步得到解決 物件導向 萬物皆物件,每個物件都有特徵和功能,物件間又可以相互作用 類 具有相同特徵或行為的事物的統稱 抽象的,不可直接使用 物件 物...

Python之物件導向(一)物件導向初識

物件導向初識 物件導向 類的結構 從類名的角度研究類 類名操作動態方法 從物件的角度研究類 物件操作物件空間屬性 物件檢視類中的屬性 class human mind 有思想 language 實用語言 def init self,name,age,hobby self.n name self.s ...

(一)物件導向理解

1.物件導向是什麼?物件導向 oo 將問題中的涉及的事物抽象化,描述事物在問題不同階段的狀態和行為。面向過程 po 將問題的解決步驟分析出後,按步驟依次執行直到得出結果。物件導向則是在你思考完步驟後,找出其中涉及的事物,將步驟中的資料,行為歸結到事物中進行分類,封裝。將面向過程的步驟進行分類歸納,得...