Python 类方法
实例方法访问调用对象的实例变量,因为它获取调用对象的引用。但它也可以访问类变量,因为类变量是所有对象共享的。
Python有一个内置函数classmethod(),它将实例方法转换为类方法,只能使用类的引用而不是对象来调用。
语法
classmethod(instance_method)
示例
在Employee类中,用带有” self “参数(指向调用对象的引用)定义一个showcount()实例方法。它打印出empCount的值。接下来,将该方法转化为类方法counter(),可以通过类引用来访问。
class Employee:
empCount = 0
def __init__(self, name, age):
self.__name = name
self.__age = age
Employee.empCount += 1
def showcount(self):
print (self.empCount)
counter=classmethod(showcount)
e1 = Employee("Bhavana", 24)
e2 = Employee("Rajesh", 26)
e3 = Employee("John", 27)
e1.showcount()
Employee.counter()
输出
使用对象调用showcount(),使用类调用count(),都显示了员工计数的值。
3
3
使用 @classmethod() 装饰器是定义类方法的推荐方式,因为它比首先声明实例方法然后变换为类方法更方便。
@classmethod
def showcount(cls):
print (cls.empCount)
Employee.showcount()
类方法充当替代构造函数。使用构建新对象所需的参数定义一个新的newemployee()类方法。它返回构造的对象,这是__init__()
方法所做的事情。
@classmethod
def showcount(cls):
print (cls.empCount)
return
@classmethod
def newemployee(cls, name, age):
return cls(name, age)
e1 = Employee("Bhavana", 24)
e2 = Employee("Rajesh", 26)
e3 = Employee("John", 27)
e4 = Employee.newemployee("Anil", 21)
Employee.showcount()
现在有四个员工对象。