# 定義函式
def printme( str ):
print (str);
return;
# 呼叫函式
printme("我要呼叫使用者自定義函式!");
printme("再次呼叫同一函式");
類的優點:
1、類物件是多型的:也就是多種形態,這意味著我們可以對不同的類物件使用同樣的操作方法,而不需要額外寫**。1、定義類2、類的封裝:封裝之後,可以直接呼叫類的物件,來操作內部的一些類方法,不需要讓使用者看到**工作的細節。
3、類的繼承:類可以從其它類或者元類中繼承它們的方法,直接使用。
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進行裝飾,則該方法是乙個類方法。類方法與預設成員方法區別是 類方法屬於類,而預設成員方法屬於類的例項化物件,怎麼理解,下面 進行詳細展示 在 最後兩行,我們...