gpt4 book ai didi

python - 编写一个引用实例和类的python方法

转载 作者:太空狗 更新时间:2023-10-29 17:59:11 24 4
gpt4 key购买 nike

假设我们在 Python 中有一个 Pet 类:

class Pet(object):
num_pets = 0

def __init__(self, name):
self.name = name
Pet.num_pets += 1

def speak(self):
print("My name's %s and the number of pets is %d" % (self.name, self.num_pets))

我希望init 方法创建一个实例,同时更新类的一个属性。有没有比上面的代码更优雅的方法来做到这一点?我尝试将 selfcls 传递给 init 方法,然后在 num_pets 递增的地方引用 cls 而不是 Pet,但这没有用。

最佳答案

您可以使用classmethod 来增加宠物的数量:

class Pet(object):
num_pets = 0

def __init__(self, name):
self.name = name
self.incr_num_pets()

@classmethod
def incr_num_pets(cls):
cls.num_pets += 1

或者,您可以在 type(self) 上增加 num_pets:

def __init__(self, name):
self.name = name
type(self).num_pets += 1

虽然我发现第二种方法稍微不那么优雅,即使它不需要打字。

关于python - 编写一个引用实例和类的python方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43401811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com