python命名空間特性 Python物件導向基礎

2021-10-11 13:10:27 字數 2391 閱讀 3579

一、oop

oop就是**的重用,通過分解**,最小化**的冗餘以及對現存的**進行定製來編寫程式;oop模型中有兩種物件,類物件和例項物件。類物件提供預設行為,是生產例項物件的工廠;類物件和例項物件都有各自命名空間。

二、python類的主要特性

• class語句建立類物件並將其賦值給變數名

• class語句內的頂層賦值語句會建立類的屬性

• 類屬性提供物件的狀態和行為

三、python例項物件的主要特性

• 每次類呼叫時,都會建立並返回新的例項物件

• 每個例項物件繼承類的屬性並獲得了自己的命名空間

• 每個例項物件通過構造方法獲得每個例項自己的屬性

四、建立類和例項物件-類的封裝

封裝,是將物件的資料與運算元據的方法相結合,通過方法將物件的資料與實現細節保護起來,就稱為封裝。外界只能通過物件的方法訪問物件,因此封裝同時也實現了物件的資料隱藏

class person():

#類的屬性--靜態屬性

country="china"

#封裝--初始化方法

def __init__(self,*args):

self.name=args[0]

self.age=args[1]

self.aggr=args[2]

self.***=args[3]

#方法def walk(self,n):

print("%szoule%sbu"%(self.name,n))

#呼叫類建立例項物件,自動執行構造方法__init__

jonny=person('jonny',11,23,'man')

#例項物件呼叫類的方法

jonny.walk(10)

#例項物件呼叫類的屬性

print(jonny.country)

五、類的繼承

單繼承類可以通過繼承進行定製;類的繼承豐富了軟體的層級,在層級較低的地方覆蓋現有的屬性,讓其行為特定化。

在python中,例項物件從類中繼承,而類繼承於超類

• 超類寫在類開頭的括號中

• 類從其超類中繼承屬性

• 例項會繼承所有可讀取類的屬性

• 每次例項物件的屬性呼叫都會進行類樹搜尋

• 邏輯的修改是通過建立子類,而不是修改超類

#建立父類---經典類

class a():

a1="11"

#建立子類,繼承父類a

class b(a):

b1="22"

#呼叫父類的屬性

print(b.a1)

以上的例子中父類是經典類,因為父類未繼承object類;繼承object類的父類是新式類

#建立父類---新式類

class a(object):

a1="11"

#建立子類,繼承父類a

class b(a):

b1="22"

#呼叫父類的屬性

print(b.a1)

在繼承中,父類是經典類那麼子類就是經典類;父類是新式類,子類就是新式類

多繼承python支援繼承多個類,那麼在繼承父類的屬性和方法時改怎麼找呢?

class d(object):

def display(self):

print('d.display')

class c(d):

def display(self):

print('c.display')

class b(d):

def display(self):

print('b.display')

class a(b,c):

def display(self):

print('a.display')

a=a()

a.display()

執行display方法時,查詢順序為 a--b--c--d

六、類的多型

類的多型性是指具有不同功能的函式可以使用相同的函式名,這樣就可以用乙個函式名呼叫不同內容的函式。

class person():

def display(self):

pass

class man(person):

def display(self):

print("man")

class woman(person):

def display(self):

print("woman")

def func(obj):

obj.display()

#例項化物件

man1=man()

woman1=woman()

#多型func(man1)

func(woman1)

標籤:display,self,class,物件,例項,父類,print

Python 命名空間

本文介紹python中命名空間中的legb原則。legb含 釋 l local function 函式內的名字空間,包括區域性變數和形參 e enclosing function locals 外部巢狀函式的名字空間 例如closure g global module 函式定義所在模組 檔案 的名字...

python 命名空間

作用域 第五章說過,將輸入字元作為命令放在作用域字典裡 作用域,每個函式都有乙個作用域,就是 字典,字典名字為函式名,鍵為變數,鍵值為變數對應的賦值。函式的作用域為區域性作用域 在函式內部訪問全域性變數,且只是讀取變數的值不重新繫結變數。這樣引用易出錯誤。慎重使用全域性變數 defcombine p...

python命名空間

區域性命名空間下def foo a a if name main foo 報錯資訊 unboundlocalerror local variable a referenced before assignment 全域性命名空間下if name main b b報錯資訊 nameerror name ...