区别 Python 中的类方法和实例方法
在Python中,我们可以在一个类中定义三种类型的方法,下面是其描述:
- 实例方法:它们与实例相关联,在执行它们之前需要先创建一个实例。它们接受第一个属性作为对实例(
self,可以用汉字我代替,我们在前面的文章里见到过)的引用,并可以读取和更新实例的状态。__init__是一个构造函数方法,是实例方法的一个示例; - 类方法:这些方法是用
@classmethod装饰器声明的。这些方法不需要类实例来执行。对于此方法,类引用(使用cls作为约定,也可以使用任何一个你喜欢的汉字代替)将作为第一个参数; - 静态方法:这些方法是用
@staticmethod修饰符声明的。他们无法访问cls或self对象。静态方法类似于接受某些参数并根据参数值提供输出的实用函数——例如,如果我们需要评估某些输入数据或解析数据进行处理,我们可以编写静态方法来实现这些目标。静态方法的工作方式类似于我们在模块中定义的常规函数,但在类名称空间的上下文中可用。
为了说明如何在Python中定义和使用这些方法,我创建了一个简单的程序,如下所示(我将在能使用汉字的地方,就使用汉字,请英语爱好者见谅):
class 小汽车类:
质量标准 = "国家质量标准"
def __init__(我, 颜色, 品牌):
我.颜色 = 颜色
我.品牌 = 品牌
def 打印_颜色(我):
print(f"小汽车的颜色是:{我.颜色}")
def 打印_品牌(我):
print(f"小汽车的品牌是:{我.品牌}")
@classmethod
def 打印_质量标准(我之类):
print(f"我之质量标准:{我之类.质量标准}")
print(f"我之类名字是:{我之类.__name__}")
@staticmethod
def 打印_你好():
print("哇哦,这是一个来自于静态方法的问候")
if __name__ == "__main__":
小汽车 = 小汽车类("白色", "国威")
小汽车.打印_颜色()
小汽车.打印_品牌()
小汽车.打印_质量标准()
小汽车.打印_你好()
小汽车类.打印_颜色(小汽车)
小汽车类.打印_质量标准()
小汽车类.打印_你好()
这个程序的输出结果是:
小汽车的颜色是:白色
小汽车的品牌是:国威
我之质量标准:国家质量标准
我之类名字是:小汽车类
哇哦,这是一个来自于静态方法的问候
小汽车的颜色是:白色
我之质量标准:国家质量标准
我之类名字是:小汽车类
哇哦,这是一个来自于静态方法的问候
在这个程序中,我们做了以下事情:
- 我们创建了一个
小汽车类类,它有一个类属性(质量标准)、一个类方法(打印_质量标准)、一种静态方法(打印_你好)、实例属性(颜色和品牌)、实例方法(输出_颜色和输出_品牌)和构造函数方法(__init__)。 - 我们使用
小汽车类类的构造函数创建了一个小汽车类类的实例。 - 使用实例变量(本例中为
小汽车),我们调用了实例方法、类方法和静态方法。 - 使用类名(本例中为
小汽车类),我们再次触发了实例方法、类方法和静态方法。请注意,我们可以使用类名触发实例方法,但我们需要将实例变量作为第一个参数传递(这也解释了为什么我们需要每个实例方法的我(self)参数)。
<结束>

被折叠的 条评论
为什么被折叠?



