Python基礎學習:類語法規則
阿新 • • 發佈:2018-12-10
【類】
一、定義方式:
class 類名(object):
二、呼叫方式:
1、類名()
2、物件 = 類名()
#當一個變數 等於 一個類名() #時它就叫物件
三、方法:
1、公有方法()
#方法跟函式基本是類似,不同之處在於它的自帶一些引數,而且因為是寫在類裡面的所以呼叫時,是通過類的呼叫方式去點出方法的。定義方式即 def 函式名(self):
2、__私有方法()
#在函式名前面加上__雙下劃線,即 def __函式名(self):
3、__系統方法__
#系統方法又稱為魔法方法,它是程式自己寫好的方法,直接書寫它的方法即可呼叫,即 def __init__(self):
#常用的系統方法 ,可忽略
#__new__(cls) #是在一個物件例項化的時候呼叫的第一個方法,它的第一個引數是這個類,其他引數是傳給__init__方法的
# __init__(self): #構造,當一個例項被建立的時候呼叫的初始化方法
#__del__(self): #析構,當一個例項被銷燬的時候呼叫的方法
#__str__(self): #定義當被str()呼叫時的行為
【程式碼】:
類的書寫規範:
#類的書寫規範 #建立一個test類 class test(object): #系統方法 def __init__(self): pass #公開方法 def fountion1(self): pass #私有方法 def __fountion2(self): pass #呼叫方式 t = test() t.fountion() #定義物件,通過物件點出公開方法 #私有方法只能通過在公開方法裡面定義才能呼叫,後面有講 #pass是跳過當前語句
__init__方法:
class test(object):
def __init__(self,Name,Number):
self.name = Name
self.number = Number
def fountion(self):
print(self.name)
print(self.number+100)
t = test("小愛",150)
t.fountion()
#__init__方法是接收例項物件時傳遞進來引數的
#通過例項類 test(引數) 來向類裡面的方法傳遞引數,用__init__(self,接收引數位
#輸出結果
輸出結果 小愛
輸出結果 250
類執行順序:
#類的內部自帶方法程式執行順序方法:new、init、 、del
class Test(object):
number = 100
def __new__(cls):
print("__new__建立")
return object.__new__(cls)
def __init__(self):
print("__init__初始化")
def __str__(self):
print("__str__物件描述資訊方法")
return self.number
def __del__(self):
print("__del__刪除")
test = Test()
#__str__方法呼叫是直接print(物件)會輸出__str__ return 返回的資訊
#輸出結果
__new__建立
__init__初始化
__del__刪除
私有方法的呼叫:
#公有方法調私有方法
class Mo:
def __test(self): #私有方法定義方式: __xx()
print("asasasas")
def text(self,m):
if m>0:
self.__test() #呼叫私有方法
else:
print("bbbbbbbbb")
mo = Mo() #給Mo建立物件
mo.text(10) #通過物件點出公有方法
#原理介紹:
#在公有方法裡面設定私有方法,
#通過呼叫公有方法從而能呼叫私有方法
#聯想記憶:
#python的類就像一棟房子,公有方法就像公開的大廳前臺,私有方法就像房間,要想進入房間就要先通過大廳前臺找到這間房的鑰匙
#輸出結果
asasasas
*********************************************************************************
類方法:通過@classmethod裝飾器裝飾並且第一個引數是cls的方法叫類方法
例項方法:沒有通過@classmethod裝飾器裝飾並且第一個引數是self的方法叫例項方法
類屬性:cls.屬性
例項屬性:self.屬性
#類方法、例項方法、類屬性、例項屬性
class Game(object):
num = 0
def __init__(self):
self.name = "lcarus"
@classmethod#裝飾器
def addmethods(cls):
cls.num = 100
@staticmethod#裝飾器
def print_s():
print("-----------")
game = Game()
print(game.name)
game.addmethods()
print(game.num)
game.print_s()
#輸出結果
lcarus
100
-----------