python | 实例函数、静态函数和类函数

实例方法

在类中定义的方法,一般都是实例方法,第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法),只能由实例对象调用。

类方法

定义前需要使用@classmethod装饰器进行装饰。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法),调用此方法时,会同时创建一个实例,注意:此方法调用时,类的构造函数必须要有默认值,类对象或实例对象都可以调用。

静态方法

定义前需要使用@staticmethod装饰器进行装饰。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法,调用此方法时,不需要进行实例化,类对象或实例对象都可以调用。

实例:

# coding=utf-8


class Chinese(object):
    nationality = '中国'
    
    def __init__(self, name='Super于', age=25):
        self.name = name
        self.age = age


    # 实例方法
    def print_info(self):
        print('国籍:', Chinese.nationality)
        print('姓名:', self.name)
        print('年龄:', self.age)


    # 类方法
    @classmethod
    def get_nationality(cls):
        print('类方法生成了实例对象:', cls)
        # print('姓名:', self.name)  # 会报错 name 'self' is not defined
        return cls.nationality


    # 静态方法
    @staticmethod
    def print_interest(interest):
        print('我的爱好是', interest)
    
if __name__ == "__main__":    
    # 调用实例方法,首先对类进行实例化
    superyujx = Chinese()
    superyujx.print_info()
    
    # 调用类方法,同时会创建一个实例
    print(Chinese.get_nationality())


    # 调用静态方法
    Chinese.print_interest('编程')

结果:

国籍:中国
姓名:Super于
年龄:25
类方法生成了实例对象:
中国
我的爱好是 编程

我是「Super于」,立志做一个每天都有正反馈的人!

python | 实例函数、静态函数和类函数_第1张图片

你可能感兴趣的:(Python)