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)。需要实现init和str 方法" 这就是我所做的:
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__()