Python基于staticmethod裝飾器標(biāo)示靜態(tài)方法
英文文檔:
staticmethod(function)
Return a static method for function.
A static method does not receive an implicit first argument.
The @staticmethod form is a function decorator ? see the description of function definitions in Function definitions for details.
It can be called either on the class (such as C.f()) or on an instance (such as C().f()). The instance is ignored except for its class.
標(biāo)示方法為靜態(tài)方法的裝飾器
說明:
1. 類中普通的方法,實際上既可以被類直接調(diào)用也可以被類的實例對象調(diào)用,但是被實例對象調(diào)用的時候,要求方法至少有一個參數(shù),而且調(diào)用時會將實例對象本身傳給第一個參數(shù)
>>> class Student(object): def __init__(self,name): self.name = name def sayHello(lang): print(lang) if lang == ’en’: print(’Welcome!’) else: print(’你好!’) >>> Student.sayHello<function Student.sayHello at 0x02AC7810>>>> a = Student(’Bob’)>>> a.sayHello<bound method Student.sayHello of <__main__.Student object at 0x02AD03F0>>>>> Student.sayHello(’en’) # 類調(diào)用的時候,將’en’傳給了lang參數(shù)enWelcome!>>> a.sayHello() # 類實例對象調(diào)用的時候,將對象本身自動傳給了lang參數(shù),不能再接收參數(shù)<__main__.Student object at 0x02AD03F0>你好! >>> a.sayHello(’en’) Traceback (most recent call last): File '<pyshell#7>', line 1, in <module> a.sayHello(’en’) TypeError: sayHello() takes 1 positional argument but 2 were given
2. staticmethod函數(shù)功能就是將一個方法定義成類的靜態(tài)方法,正確的方法是使用 @staticmethod裝飾器,這樣在實例對象調(diào)用的時候,不會把實例對象本身傳入靜態(tài)方法的第一個參數(shù)了。
# 使用裝飾器定義靜態(tài)方法>>> class Student(object): def __init__(self,name): self.name = name @staticmethod def sayHello(lang): print(lang) if lang == ’en’: print(’Welcome!’) else: print(’你好!’) >>> Student.sayHello(’en’) #類調(diào)用,’en’傳給了lang參數(shù)enWelcome!>>> b = Student(’Kim’) #類實例對象調(diào)用,不再將類實例對象傳入靜態(tài)方法>>> b.sayHello()Traceback (most recent call last): File '<pyshell#71>', line 1, in <module> b.sayHello()TypeError: sayHello() missing 1 required positional argument: ’lang’>>> b.sayHello(’zh’) #類實例對象調(diào)用,’zh’傳給了lang參數(shù)zh你好!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python excel和yaml文件的讀取封裝2. 利用單元測試對PHP代碼進行檢查3. python如何實現(xiàn)word批量轉(zhuǎn)HTML4. Java8內(nèi)存模型PermGen Metaspace實例解析5. python3實現(xiàn)往mysql中插入datetime類型的數(shù)據(jù)6. moment轉(zhuǎn)化時間戳出現(xiàn)Invalid Date的問題及解決7. python爬蟲實戰(zhàn)之制作屬于自己的一個IP代理模塊8. 如何對php程序中的常見漏洞進行攻擊9. Python實現(xiàn)http接口自動化測試的示例代碼10. Python實現(xiàn)AES加密,解密的兩種方法
