下面是“跟老齐学Python之编写类之二方法”的完整攻略。
一、编写类方法
类方法是针对整个类而言,而不是针对实例。类方法使用@classmethod装饰器定义,第一个参数是cls,表示类本身。类方法可以通过类调用,也可以通过实例调用。
使用类方法的主要目的是操作类中的类变量,或操作与类相关的其他对象。在调用类方法时,不需要创建实例。
示例一:
class Person:
count = 0
@classmethod
def add_person(cls):
cls.count += 1
print("当前人数:", cls.count)
Person.add_person() # 当前人数:1
Person.add_person() # 当前人数:2
上面的代码中,我们定义了一个Person类,并在其中添加了一个类变量count,表示Person实例的数量。然后我们定义了一个类方法add_person,用来将Person实例的数量加一,并输出当前的Person实例数量。最后,我们通过类调用add_person方法,并观察输出结果。
示例二:
class Circle:
pi = 3.14
def __init__(self, r):
self.r = r
@classmethod
def from_diameter(cls, d):
r = d / 2
return cls(r)
def area(self):
return self.pi * (self.r ** 2)
c = Circle.from_diameter(10)
print(c.area()) # 78.5
上面的代码中,我们定义了一个Circle类,并在其中添加了一个类变量pi,表示圆周率。然后我们定义了一个初始化方法__init__,用来初始化圆的半径。接着我们定义了一个类方法from_diameter,它接受一个直径作为参数,并通过计算得出对应的半径,最后返回一个相应的Circle实例。最后,我们会创建一个圆c,并通过调用area方法得到它的面积,输出结果为78.5。
二、总结
以上就是”跟老齐学Python之编写类之二方法”的完整攻略,其中包括了编写类方法的方法,以及两条示例说明。需要注意的是,类方法的主要目的是操作类中的类变量,或操作与类相关的其他对象,因此在实际使用中需要根据具体的需求来选择使用类方法还是实例方法。