Python Classmethod和Staticmethod函数

1.Clssmethod描述: Classmethod 修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以来调用类的属性,类的方法,实例化对象等。

class Animal:
    #属性默认为类属性(可以直接被类本身调用)
    nums = 10

    #实例化方法,必须要实例化类就可以被类调用
    def cat(self):
        print('------ cat --------------')
        print(self) #self:表示实例化类后的地址id
        print(self.nums)
    
    #类方法,不用实例化类就可以被类调用
    @classmethod 
    def dog(cls):
        print('--------- dog ---------------')
        print(cls) #表示没有被类实例化后的类本身
        print(cls.nums)
    
    #不传递默认self参数的方法(该方法可以直接被类调用,但是不标准)
    def pig():
        print('------------ pig ---------------')
        print()


obj = Animal()
obj.cat()
Animal.dog()
Animal.pig()

执行结果:

 

2.Staticmethod描述:Python staticmethod返回函数的静态方法

该方法不强制要求传递参数,如下声明一个静态方法

class Solution:
    
    nums = 1

    @staticmethod 
    def test1():
        print('------ test1 ---------')
        return 'test1'

    @staticmethod 
    def test2(name):
        print('------ test2 ---------')
        print(name)
        return 'test2'

print(Solution.test1())
print(Solution.test2('alex'))

执行结果:

 

posted @ 2020-10-20 14:13  风不再来  阅读(140)  评论(0编辑  收藏  举报