python-3.x - 在下一个对象中追加重复
问题描述
我有两个同一个类的对象,它们有一个数组属性。在填充第一个数组,然后是第二个数组后,第二个数组将值添加到第一个数组中。
from random import *
class Army:
divisions = []
def __init__(self, name):
self.name = name
def rnd(max):
return randint(0, max - 1)
def init_army(i):
army = Army(names[i])
armies.append(army)
divisions = rnd(num_divisions) + 1
for i in range(divisions):
army.divisions.append(rnd(num_divisions) + 1)
names = ["name1", "name2"]
armies = []
num_armies = 2
num_divisions = 6
for i in range(num_armies):
init_army(i)
print(armies[i].name, armies[i].divisions)
Typical Output:
name1 [5, 1]
name2 [5, 1, 2, 5, 6, 2, 1]
解决方案
线条
class Army:
divisions = []
做divisions
一个类属性。
把它变成一个实例属性:
class Army:
def __init__(self, name):
self.divisions = []
self.name = name
在 python 中没有声明。相反,名称(变量和属性)是通过赋值来定义的。
你在哪里分配事情很重要。
请查看命名空间
推荐阅读
- c++ - 使用许多自定义错误消息终止 C++ 程序的最佳实践
- react-native - 使用 react-native-fs 在 React-Native 中保存文件
- javascript - 如何解决故事书未加载故事的问题?
- android - Flutter 风格不适合 iOS
- java - 使用 swagger2Markup 时发生 NoClassDefFoundError
- java - 无法推断 ArraySortedMap<> 的类型参数
- validation - 如何从 GraphQL 模式创建验证规则
- firebase - Firestore 获取子集合父文档 ID - JavaScript
- typescript - Next.js 源映射与 Sentry 上的打字稿
- arrays - 将 Append 方法添加到泛型 TArray 类型