Python 中的类:__str__ 方法和列表

Posted

技术标签:

【中文标题】Python 中的类:__str__ 方法和列表【英文标题】:Classes in Python: __str__ method and list 【发布时间】: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。 【参考方案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

【讨论】:

以上是关于Python 中的类:__str__ 方法和列表的主要内容,如果未能解决你的问题,请参考以下文章

Python中的__str__()方法和__repr__()方法

python_魔法方法:__str__()和__repr__()

python类中方法__str__()和__repr__()简单粗暴总结

Django --魔法方法:def __str__()

Python中的类

python魔术方法