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()

现在有四个 Employee 对象。