Python类方法@classmethod()

Python类方法@classmethod()

在python中类方法是一种特殊的方法,它与类本身相关联,而不是与类的实例对象相关联。

  1. 类方法的定义。
    类方法使用@classmethod()来装饰,它的第一个参数通常被命名为cls,它指向类的本身,而不是类的实例。类方法可以通过类名或者类的实例来调用。
class MyClass:
    @classmethod
    def my_class_method(cls, arg1, arg2):
        # do something with cls, arg1, and arg2
  • 类方法的用途。
  • 在实例之前做的操作。
  • 在类的所有实例之间共享某些属性和方法。
  • 提供一种替代构造函数的方式。
class MyClass:
    count = 0

    def __init__(self):
        MyClass.count += 1

    @classmethod
    def get_count(cls):
        return cls.count

a = MyClass()
b = MyClass()
c = MyClass()

print(MyClass.get_count()) # 输出 3

提供一种替代构造函数的方式

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    def from_birth_year(cls, name, birth_year):
        age = datetime.date.today().year - birth_year
        return cls(name, age)

person = Person.from_birth_year('Alice', 1990)
print(person.name) # 输出 'Alice'
print(person.age) # 输出 33

在这个示例中,我们定义了一个名为from_birth_year的类方法。它接受一个名字和出生年份作为参数,并返回一个Person实例。使用类方法,我们可以提供一种替代构造函数的方式。

用类调用类方法,得到的结果是一个类实例。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值