python類與方法

2021-09-01 06:14:15 字數 3772 閱讀 4054

# 定義函式

def printme( str ):

print (str);

return;

# 呼叫函式

printme("我要呼叫使用者自定義函式!");

printme("再次呼叫同一函式");

類的優點:

1、類物件是多型的:也就是多種形態,這意味著我們可以對不同的類物件使用同樣的操作方法,而不需要額外寫**。

2、類的封裝:封裝之後,可以直接呼叫類的物件,來操作內部的一些類方法,不需要讓使用者看到**工作的細節。

3、類的繼承:類可以從其它類或者元類中繼承它們的方法,直接使用。

1、定義類

class test:

def name(self,name):

self.name = name

一第行,語法是class 後面緊接著,類的名字,最後別忘記「冒號」,這樣來定義乙個類。

類的名字,首字母,有乙個不可文的規定,最好是大寫,這樣需要在**中識別區分每個類。

第二行開始是類的方法,大家看到了,和函式非常相似,但是與普通函式不同的是,它的內部有乙個「self」,引數,它的作用是對於物件自身的引用。

2、初始化物件

建立類時,可以定義乙個特定的方法,名為__init__(),只要建立這個類的乙個例項就會執行這個方法。可以向__init__()方法傳遞引數,這樣建立物件時就可以把屬性設定為你希望的值__init__()這個方法會在建立物件時完成初始化
class people:

def __init__(self,name,age,***):

self.name = name

self.age = age;

self.*** = ***;

def speak(self):

print ("my name"+self.name)

peo_1 = people("haha",24,"man")

print(peo_1.name)

print(peo_1.age)

print("\n")

peo_2 = people("hehe",20,"girl")

print(peo_2.name)

print(peo_2.age)

之前多次用到self這個形參類就好比是一張藍圖,使用乙個類可以建立多個物件例項,speak()方法在被呼叫時,必須知道是哪個物件呼叫了它.

這裡self引數就會告訴方法是哪個物件來呼叫的.這稱為例項引用。

3、類的私有屬性

__private_attrs 兩個下劃線開頭,宣告該屬性為私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs

4、靜態方法

也可以沒有self,即靜態方法,@staticmethod是指類中無需例項參與即可呼叫的方法(不需要self引數),在呼叫過程中,無需將類例項化,直接在類之後使用.號運算子呼叫方法。

class classa(object):

@staticmethod

def func_a():

print('hello python')

classa.func_a() #直接呼叫

ca = classa() #物件引用

ca.func_a()

5、classmethod   (類方法)

在python中.類方法 @classmethod 是乙個函式修飾符,它表示接下來的是乙個類方法,而對於平常我們見到的則叫做例項方法。 類方法的第乙個引數cls,而例項方法的第乙個引數是self,表示該類的乙個例項。

class classa(object):

@classmethod

def func_a(cls):

print(type(cls), cls)

if __name__ == '__main__':

classa.func_a()

ca = classa()

ca.func_a()

這裡還需要注意,如果存在類的繼承,那類方法獲取的類是類樹上最底層的類。

class basea(object):

@classmethod

def func_a(cls):

print(type(cls), cls)

class baseb(object):

pass

class classa(basea, baseb):

pass

classa.func_a()

6、例項方法.

除靜態方法與類方法外,類的其他方法都屬於例項方法。例項方法需要將類例項化後呼叫,如果使用類直接呼叫例項方法,需要顯式地將例項作為引數傳入。最左側傳入的引數self,是例項本身。

class classa(object):

def func_a(self): #只有乙個引數是self,沒有別的引數,呼叫函式的時候直接呼叫print方法

# 使用例項呼叫例項方法

ca = classa()

ca.func_a()

# 如果使用類直接呼叫例項方法,需要顯式地將例項作為引數傳入

classa.func_a(ca)

單繼承

class person(object):   # 定義乙個父類

def talk(self): # 父類中的方法

print("person is talking....")

class chinese(person): # 定義乙個子類, 繼承person類

def walk(self): # 在子類中定義其自身的方法

print('is walking...')

c = chinese()

c.talk() # 呼叫繼承的person類的方法

c.walk() # 呼叫本身的方法

子類對父類方法的重寫  與  建構函式的繼承

class person(object):

def __init__(self, name, age):

self.name = name

self.age = age

self.weight = 'weight'

def talk(self):

print("person is talking....")

class chinese(person):

def __init__(self, name, age, language):

person.__init__(self, name, age) #super(chinese,self).__init__(name,age)

self.language = language

print(self.name, self.age, self.weight, self.language)

def talk(self): # 子類 重構方法

print('%s is speaking chinese' % self.name)

c = chinese('bigberg', 22, 'chinese')

c.talk()

還可以多重繼承

class sample(speaker,student):

Python類成員方法與靜態方法

python中類屬性有類屬性和例項屬性之分,類的方法也有不同的種類 例項方法 類方法靜態方法 例子 class demomthd staticmethod 靜態方法 def static mthd print 呼叫了靜態方法 classmethod 類方法 def class mthd cls pr...

Python類的屬性與方法

1 類的私有屬性和方法 private attrs 兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時self.private attrs。private method 兩個下劃線開頭,宣告該方法為私有方法,不能在類地外部呼叫。在類的內部呼叫self.priva...

Python中的類的成員方法與類方法

python中的 類成員方法 與 類方法 是類的成員函式兩種不同的形式。類方法 在乙個類定義中,如果某個方法使用了裝飾器 classmethod進行裝飾,則該方法是乙個類方法。類方法與預設成員方法區別是 類方法屬於類,而預設成員方法屬於類的例項化物件,怎麼理解,下面 進行詳細展示 在 最後兩行,我們...