1. 程式人生 > >Python學習第四章

Python學習第四章

結果 值傳遞 import 構造方法 parent turn $1 sample 包含

1.類和對象:

類對象支持兩種操作:屬性引用和實例化。

屬性引用:obj.name

構造方法:類會定義一個名為__int__()的特殊方法如下

def __init__(self):

self.data=[]

類定義了__init__()方法的話,類的實例化操作會自動調用__init__()的方法。如下所示:

X=Class()

當然,__init__()方法可以有參數,參數通過__init__()傳遞到類的實例化操作上。如下所示:

class All:

def __init__(self,realpart,imagpart):

self.r=realpart

self.i=imagpart

X=All(2,3.2)

print(X.r,X.i)

這樣我們就把值傳遞到了X上,輸出的結果為:2 3.2

看到這裏,我們也許會對self產生疑問,下面我們就對self 進行解釋:

self代表類的實例,奧不是類,代表的是當前對象的地址,self.class則指向類

這裏要註意的是self並不是python的關鍵字,我們把它化成we也是可以的,只不過我們

規定用self。

2.類的方法

在類的內部,使用def關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數self,且為第一個參數,self代表的是

類的實例。

class man:

name=‘‘

age=‘‘

__weigth=0(__. 屬性為私用的屬性,在內部類無法進行直接訪問)

def __init__(self,n,a,w):

self.name=n

self.age=a

self.__weigth=w

def speak(self):

print("%ssay:I am%do ld。"%(self.name,self.age))

下面我們來實例化:

p=man(‘xiaodong‘,20,170)

p.speak()

以上代碼的輸出為:

xiaodong say:i am 20 old

如果我們想要輸出__weight,卻是沒有結果的,該屬性只用在 man中使用

3.類的繼承:

python的基類中如果有相同的方法名,但是在子類中使用時卻沒有指定,python從左到右搜索就方法在子類中沒有找到時,查找基類中是否包含方法

如下:

class dong:

clas dong1要繼承class dong

clss dong1 (class dong)

當然類可以多繼承,但是要註意圓括號父類的排序,如果父類中有相同的方法名,但是子類使用時沒用指定,python從左到右搜索再到父類中是否包含該方法。如下:

calss dong1

class dong2

dong3繼承上面的類

class dong3(dong1,dong2):

a=‘‘

def __init__(self ,n,a,w,g):

dong1.__init___(self,n,a,w,g)

dong2.__init__(self,n.t)

test=sample("Tim",25,80,4,"python")

test.speak()

4.方法的重寫:

如果你的父方法的功能不可以滿足你的需求,那麽你可在子類重寫你父的方法,如下:

class P arent:

def muMethon(self):

print(" 調用父類方法")

class Child(Parent):

def muMethon(self):

print(" 調用子類的方法‘)

c=Child()

c.muMethon()

執行以上代碼的輸出結果為:

調用子類方法

5.運算符重載;

class dong:

def __init__(self,a,b):

self.a=a

self.b=b

def __str__(self):

return‘ dong(%d,%d)‘%(self.a,self.b)

def__add__(self,other):

retur dong(self.a+other.a,self.b+other.b)

v1=dong(2,10)

v2=dong(5,-2)

print(v1+v2)

以上代碼的執行結果為dong(7,8)

6. 裝飾

裝飾

對原有的方法進行美化,更好的實現功能,如下我們以吃火鍋為例子:

原材料:
鍋底

裝飾:

肥牛 品羊肉 蔬菜



import types


def feiniu(n):
print("肥牛:¥58")
if type(n) == types.FunctionType:
return n()+58
return n+58
def shucai(n):
print("蔬菜:$17")
if type(n) == types.FunctionType:
return n()+17
return n+17
@shucai
@feiniu
def mala():
print("麻辣鍋底:$12")
return 12

print("共消費:"+str(mala))

Python學習第四章