首页 > 解决方案 > Python 中的类:__str__ 方法和列表

问题描述

我在学校得到了这个任务:“完成Animal类和一个类变量animals(list)和两个实例变量name(str)和number(int)。你需要实现initstr方法”这就是我所做的:

class Animal:

    animals = []
    number = 0

    def __init__(self, name):
        self.name = name  
        Animal.number =+1

    def __str__(self):
        return f"{Animal.number}. {self.name.capitalize()}"

以下是我应该完成的测试:

Animal.animals.clear()

dog = Animal('dog')
assert dog.name == 'dog'
assert dog.number == 1
assert str(dog) == '1. Dog'

cat = Animal('cat')
assert cat.name == 'cat'
assert cat.number == 2
assert str(cat) == '2. Cat'

我不明白在这种情况下如何使用列表(以及如何填写)以及如何保持数字更新。我是初学者,所以请保持简单的语言,非常感谢。

标签: pythonpython-3.xstringpython-2.7class

解决方案


只需在 init 中创建新的动物实例时添加到动物列表中。

class Animal:

    animals = []
    number = 0

    def __init__(self, name):
        self.name = name  
        Animal.animals.append(name)
        Animal.number += 1 # '+=' not '=+'

    def __str__(self):
        return f"{Animal.number}. {self.name.capitalize()}"

如果您不希望列表中出现相同的动物两次,您可以执行以下操作:

if name not in Animal.animals:
    Animal.animals.append(name)

推荐阅读