Python學習第四章
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學習第四章