物件導向2--靜態方法、類方法、屬性方法
方法
普通方法、靜態方法和類方法,三種方法在記憶體中都歸屬於類,區別在於呼叫方式不同。
- 普通方法:由物件呼叫;至少一個self引數;執行普通方法時,自動將呼叫該方法的物件賦值給self;
- 類方法:由類呼叫; 至少一個cls引數;執行類方法時,自動將該類賦給cls;
- 靜態方法:由類呼叫;無預設引數;
class Foo(object):
def __init__(self,name):
self.name = name
def ord_func(self):
print("普通方法")
@classmethod
def class_func(cls):
"""定義類方法,至少一個cls引數"""
print("類方法")
@staticmethod
def static_func():
"""定義靜態方法,無預設引數"""
print("靜態方法")
#呼叫普通方法
f = Foo('wupeiqi')
f.ord_func()
#呼叫類方法(類方法只能通過cls訪問類屬性)
Foo.class_func()
#呼叫靜態方法(一個通過類呼叫的普通函式,不能直接訪問類的任何屬性或方法)
Foo.static_func()
相同點:對於所有的方法而言,均屬於類(非物件)中,所以,在記憶體中也只儲存一份。
不同點:方法呼叫者不同、呼叫方法時自動傳入的引數不同。
屬性方法
@property裝飾器可以使被裝飾的方法成為一個屬性,類似其他語言的get方法
class Student(object):
def __init__(self, name, score):
self.name = name
self.__score = score
@property #例項.score 呼叫
def score(self):
return self.__score
@score.setter #例項.score = value 呼叫
def score(self,score):
if score < 0 or score > 100:
raise ValueError('invalid score')
self.__score = score
@score.deleter #del 例項.score 呼叫
def score(self):
del self.__score
print("score is deleted")
s = Student('Bob',59)
s.score = 60 #將60 賦給score 1
print(s.score)
# s.score = 1000 #將會觸發異常 2
del s.score
60
score is deleted
從上面可以看出,通過@property裝飾的屬性方法能夠對屬性封裝更多想要的操作
相關文章
- Python - 物件導向程式設計 - 例項方法、靜態方法、類方法Python物件程式設計
- PHP 物件導向 (五)靜態方法PHP物件
- js 物件方法、類方法、原型方法的區別;私有屬性、公有屬性、公有靜態屬性的區別JS物件原型
- 類的靜態屬性和方法
- 『無為則無心』Python物件導向 — 58、類方法和靜態方法Python物件
- JavaScript 靜態屬性與靜態方法JavaScript
- day10_物件導向(屬性丶方法)①物件
- Python 動態新增例項屬性,例項方法,類屬性,類方法Python
- 注意!非靜態內部類和非靜態方法的匿名類的this$0屬性
- PHP 中 static 靜態屬性和靜態方法的呼叫PHP
- PHP 物件導向 (二)類屬性PHP物件
- Python例項方法、類方法、靜態方法Python
- [.net 物件導向程式設計基礎] (10) 類的成員(欄位、屬性、方法)物件程式設計
- Java類、物件以及(靜態)方法的探討Java物件
- Perl的物件導向方法物件
- [Java物件導向]static方法Java物件
- Python Class 的例項方法/類方法/靜態方法Python
- PHP 物件導向 final類與final方法PHP物件
- Object C學習筆記10-靜態方法和靜態屬性Object筆記
- go物件導向方法的呼叫Go物件
- 理解Python中的類物件、例項物件、屬性、方法Python物件
- net 靜態方法與非靜態方法
- python入門基礎(14)--類的屬性、成員方法、靜態方法以及繼承、過載Python繼承
- Javascript 類與靜態類的實現-js物件導向JavaScriptJS物件
- TypeScript 類靜態屬性TypeScript
- 靜態方法查詢類名
- 關於php中靜態方法,靜態屬性的一些淺見PHP
- Python進階之物件導向(類的特殊方法)Python物件
- 【python】物件導向之類成員(屬性)Python物件
- JavaScript學習筆記023-物件方法0包裝物件0靜態屬性JavaScript筆記物件
- Python 靜態方法和類方法的區別Python
- Python的靜態方法和類成員方法Python
- PHP物件導向程式設計中獲取物件屬性的3種方法例項分析PHP物件程式設計
- 深入理解JavaScript類與物件:揭秘類欄位和靜態屬性的妙用,js靜態屬性和例項屬性JavaScript物件JS
- 全網最適合入門的物件導向程式設計教程:14 類和物件的 Python 實現-類的靜態方法和類方法,你分得清嗎?物件程式設計Python
- PHP 物件導向 (六)魔術方法PHP物件
- 1 物件導向的開發方法物件
- 靜態方法