Python 为什么我的循环重复生成/返回相同的值?
我想做一个相扑发电机。我已经描述了一个类Rikishi,它只有一些属性字符串和整数Python 为什么我的循环重复生成/返回相同的值?,python,Python,我想做一个相扑发电机。我已经描述了一个类Rikishi,它只有一些属性字符串和整数 class Rikishi: name = '' weight = '' skillRoll = '' skill = '' rank = '' name = generateName() *some loops to roll for numerical stats* 我也有一个列表,将容纳所有的Rikishi对象 rikishiList = [] def fillBanzuke(): for
class Rikishi:
name = ''
weight = ''
skillRoll = ''
skill = ''
rank = ''
name = generateName()
*some loops to roll for numerical stats*
我也有一个列表,将容纳所有的Rikishi对象
rikishiList = []
def fillBanzuke():
for x in range (0, 2):
r = generateRikishi()
rikishiList.append(r)
然后我有一个函数来生成这个类的一个实例
def generateRikishi():
rikishi = Rikishi()
return rikishi
显示对象中属性的函数:
def describeRikishi(rikishi):
print(rikishi.name)
print(rikishi.weight, 'kg')
print(rikishi.rank)
然后我有一个函数,用Rikishi对象填充数组
rikishiList = []
def fillBanzuke():
for x in range (0, 2):
r = generateRikishi()
rikishiList.append(r)
最后是一个函数,用于循环rikishiList并打印一个数字,以帮助测试的视觉清晰度,然后在列表的每个元素中打印Rikishi对象的统计信息
def describeBanzuke():
for x in range (0, len(rikishiList)):
print("#",x+1)
describeRikishi(rikishiList[x])
print()
然后我调用这两个函数
fillBanzuke()
describeBanzuke()
然后我打印列表的大小,只是为了确保我指定的对象被追加到列表中
print('size of rikishi list:', len(rikishiList))
我得到的结果是
# 1
Udagaje
234 kg
Komusubi
# 2
Udagaje
234 kg
Komusubi
size of rikishi list: 2
有人能给我解释一下如何避免列表中的每个元素都包含相同的信息吗?我不确定我的问题是在生成rikishi对象时发生的,还是在试图打印列表内容时发生的。如有任何建议,将不胜感激。从零开始自学python才几天
提前感谢您花费的时间和精力,因为您的属性不是对象的实际属性,它将是self.name。您可以在构造函数中设置对象的真实属性:
class A:
a = 3
def __init__(self):
self.b = 5
def __str__(self):
return f"{self.a} {self.b}"
o1 = A()
o2 = A()
print(o1, o2)
o2.a = 7
o2.b = 7
print(o1, o2)
任何关于Python中OO编程的教程都会告诉你哪里做错了。