【问题标题】:Classes in Python: __str__ method and listPython 中的类:__str__ 方法和列表
【发布时间】:2020-09-23 04:01:49
【问题描述】:

我在学校接到了这个任务: "完成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'

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

【问题讨论】:

  • 由于这是一个特定于编码的问题,因此您必须准确说明您使用的是哪个版本的 Python。

标签: python python-3.x string python-2.7 class


【解决方案1】:

在创建新的动物实例时,在 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)

【讨论】:

  • 谢谢!这正是我需要的:D
【解决方案2】:

简而言之:

  • x = +1 ==> x = 1
  • x += 1 ==> x = x + 1

所以将Animal.number = +1 更改为Animal.number += 1

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 2013-12-13
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多