靜態方法、類方法、例項方法
靜態方法:
作用:靜態方法可以更好的組織**,防止**變大後變得比較混亂。
特性: 靜態方法只是名義上歸類管理,實際上在靜態方法裡訪問不了類或者例項中的任何屬性
類方法:
作用:無需例項化直接被類呼叫
特性: 類方法只能訪問類變數,不能訪問例項變數
屬性方法:
作用:屬性方法把乙個方法變成乙個屬性,隱藏了實現細節,呼叫時不必加括號直接d.eat即可呼叫self.eat()方法
魔法方法:
__new__ : 先於__init__方法,每生成乙個例項執行一次,建立例項物件 (在記憶體中給物件分配空間)
__init__: 每生成乙個例項就會執行一次,初始化例項物件 (給物件的空間中, 儲存資料)
__call__: 有這個方法, 物件就可以被呼叫
__del__: delete obj 就會呼叫這個方法
classa(
):class_name =
'a'def
__init__
(self, num)
: self.num = num
@staticmethod
# 靜態方法
deffunc1()
:# 方法要操作的資料, 不是這個類裡的
print
('func1'
)pass
@classmethod
# 類方法
deffunc2
(cls)
:# 類方法, 這個方法, 要操作的資料是類中儲存的
print
(cls.class_name)
pass
deffunc3
(self)
:# 例項方法, 這個方法, 要操作的資料, 是例項中的資料
print
(self.num)
pass
a.func1(
)a.func2(
)a = a(
123)
a.func3(
)
屬性方法
classa(
):name =
'aaa'
birthday =
'2010-01-01'
@property
# 屬性方法
defage
(self)
:return
10a = a(
)print
(a.name)
print
(a.age)
# age函式被當做屬性使用
魔法方法
class
person
(object):
def__init__
(self, name, age)
: self.name = name
self.age = age
def__call__
(self,
*args,
**kwargs)
:print
('被呼叫了'
)def
__add__
(self, other)
:return self.age + other.age
def__ge__
(self, value)
:return self.age >= value
def__del__
(self)
:print
('被刪除了'
)class
dog():
def__init__
(self, name, age)
: self.name = name
self.age = age
p1 = person(
'lisi',18
)p2 = person(
'zs',19
)# 就算你不主動刪除, 在指令碼執行完成時, 直譯器也會把p2 刪除
# d1 = dog('xiaohua', 3)
# print(p1 + d1)
# print(d1 + p1)
# print(p1 >= 20)
# l1 = [1, 2, 3]
# l2 = [4, 5, 6]
# print(l1 + l2) # __add__()
# p1()
del p1
del p2
例項方法 靜態方法 類方法
首先新建乙個日期date類,屬性為年,月,日,tomorrow 是例項方法,這個最常見,比較簡單,例項方法的第乙個引數是例項物件self 當我們傳入的年月日是2018 6 4這樣的形式,我們就需要先進行字串處理,在這裡使用了元組的拆包 這是最基本的方式,但是這樣寫會有乙個問題,每次傳參都需要進行字串...
類方法,例項方法,靜態方法
python 中的三種方法,有三種類方法,例項方法,靜態方法,這三種方法都在類中,區別在於呼叫的方式不同。例項物件能的呼叫這三種方法,類只能呼叫類方法和靜態方法。class foo object def init self,name self.name name deford func self 定...
例項方法 類方法 靜態方法
示例方法 第乙個引數為self,必須例項化之後才能呼叫的方法 類方法 使用 classmethod進行裝飾,第乙個引數為cls,可以被類呼叫,也可以被例項呼叫。靜態方法 使用 staticmethod進行裝飾,沒有固定的引數,可以被類呼叫,也可以被例項呼叫,一般可以說跟類和例項沒有關係。classa...