Python中定義類方法的3種方式


 

常規方式, @classmethod修飾方式, @staticmethod修飾方式

class A(object):
    def foo(self, x):
        print("executing foo(%s,%s)" % (self, x))
        print('self:', self)
    @classmethod
    def class_foo(cls, x):
        print("executing class_foo(%s,%s)" % (cls, x))
        print('cls:', cls)
    @staticmethod
    def static_foo(x):
        print("executing static_foo(%s)" % x)    
a = A()

  

普通的類方法foo()需要通過self參數隱式的傳遞當前類對象的實例。 @classmethod修飾的方法class_foo()需要通過cls參數傳遞當前類對象。@staticmethod修飾的方法定義與普通函數是一樣的。

self和cls的區別不是強制的,只是PEP8中一種編程風格,slef通常用作實例方法的第一參數,cls通常用作類方法的第一參數。即通常用self來傳遞當前類對象的實例,cls傳遞當前類對象。

 

more:

http://www.cnblogs.com/elie/p/5876210.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM