实例方法与静态方法和类方法 --Python3

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons
1、实例方法(普通方法)

需要使用对象中封装的值,如self.name,就可以使用实例方法。

class Foo:
    def __init__(self, name):
        self.name = name

    # 实例化方法(一般方法)
    def f1(self):
        print(self.name)
        
obj = Foo('Thanlon')
obj.f1()
2、静态方法

如果方法无需使用对象中封装的值,那么就可以使用静态方法。写静态方法时,方法上方需要写@staticmethod,方法中参数可有可无,参数中不可以用self会出错,解释器执行时也不会将self自动传入参数列表。

class Foo:
    def __init__(self, name):
        self.name = name

    # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
    @staticmethod
    def f2():
        print('静态方法')  # 没有使用对象封装的值

Foo.f2()  # 可以通过类调用静态方法

obj = Foo('Thanlon')
obj.f2()  # 也可以通过对象调用方法

静态方法调用时,可以使用类.方法名,也可以使用对象.方法名,但推荐类来调用(调用字段的时候也是)。

3、类方法

如果在方法中会使用到当前类,那么就可以使用类方法。

定义类方法时,方法上方写@classmethod,方法中至少有一个参数cls

class Foo:
    def __init__(self, name):
        self.name = name

    @classmethod
    def show(cls):  # 和实例方法一样至少有一个参数,自动传递当前类
        print(cls)

Foo.show()

f = Foo('')
f.show()
'''
类方法! <class '__main__.Foo'>
'''

类方法和静态方法一样,可以使用类.方法名,也可以使用对象.方法名,但推荐类来调用。

猜你喜欢

转载自blog.csdn.net/Thanlon/article/details/94209787