python - AttributeError:“int”对象没有属性“display”
问题描述
我正在尝试编写一个程序,将数字随机分配给三个不同的列表,然后在不同类的帮助下,调用函数“display()”,并显示各种结果。我有我的类和随机化的循环,但每次我尝试打印 display() 结果时,我都会收到一个错误,说没有属性“显示”。我尝试更改变量名称以查看是否有帮助,但错误仍然存在。
我的代码是:
class Circle():
def __init__(self, radius=1):
self.__radius = radius
def find_area(self):
a = self.__radius * self.__radius * 3.142
return(a)
def setRadius(self, rad):
self.__radius = rad
def getRadius(self):
return(self.__radius)
def display(self):
print("\nClass = Circle")
print("The area for this circle is:\t")
return(self.find_area())
class Square():
def __init__(self, sside=2.3):
self.__sside = sside
def find_area(self):
a = self.__sside * self.__sside
return(a)
def setSSide(self, lw):
self.__sside = lw
def getSSide(self):
return(self.__sside)
def display(self):
print("\nClass = Square")
print("The area for this square is:\t")
return(self.find_area())
class Cube():
def __init__(self, cside=2):
self.__cside = cside
def find_surfacearea(self):
sa = 6 * self.__cside * self.__cside
return(sa)
def setCSide(self, lwh):
self.__cside = lwh
def getCSide(self):
return(self.__cside)
def display(self):
print("\nClass = Cube")
print("The area for this cube is:\t")
return(self.find_surfacearea())
x1 = Circle()
print(x1.display())
x2 = Square()
print(x2.display())
x3 = Cube()
print(x3.display())
#Lists and Loops
circlelist = []
squarelist = []
cubelist = []
circlecount = 0
squarecount = 0
cubecount = 0
for i in range (10):
shape = random.randint(1, 3)
number = random.randint(0, 10)
if shape == 1:
print("\n*Circle*")
circlecount += 1
circlelist.append(number)
elif shape == 2:
print("\n*Square*")
squarecount += 1
squarelist.append(number)
else:
print("\n*Cube*")
cubecount += 1
cubelist.append(number)
"""x = len(circlelist)
y = len(squarelist)
z = len(cubelist)
for i in range (x):
circlelist[i].display()
#print()
for i in range (y):
squarelist[i].display()
for i in range (z):
cubelist[i].display()"""
print("\nThe items in the circle list are:", circlelist)
print(len(circlelist))
print("The items in the square list are:", squarelist)
print(len(squarelist))
print("The items in the cube list are:", cubelist)
print(len(cubelist))
for i in range (len(circlelist)):
circlelist[i].display()
"""for i in range (10):
circlelist.display()
squarelist.display()
cubelist.display()"""
有人可以帮我看看我哪里可能出错了吗?
解决方案
目前,您的列表只是数字列表。您不能display()
在数字上运行该功能,它必须在您的一个对象上运行。这需要一个相对简单的改变。与其拥有一个数字列表,不如拥有一个对象列表。
在下面的代码中,我对其进行了更改,而不是在列表中附加一个数字,而是在适当的情况下附加一个随机数作为半径、sside、cside 的新对象。
for i in range (10):
shape = random.randint(1, 3)
number = random.randint(0, 10)
if shape == 1:
print("\n*Circle*")
circlecount += 1
circlelist.append(Circle(radius=number))
elif shape == 2:
print("\n*Square*")
squarecount += 1
squarelist.append(Square(sside=number))
else:
print("\n*Cube*")
cubecount += 1
cubelist.append(Cube(cside=number))
如何编辑__init__
功能以在创建时显示:
def __init__(self, radius=1):
self.__radius = radius
self.display()
推荐阅读
- tsql - 为什么我通过 Openquery 通过 Hortonworks ODBC 驱动程序在 SSMS 中运行的 Hive QL 查询会产生错误?
- java - 给定的反向名称
- google-sheets - 谷歌表查询 - 排除最后一行
- python - 熊猫在另一列中出现某个值之前选择行的子集
- javascript - 是否可以在花式框中动态创建更大的图像?
- ibm-cloud - 如何在 IBM Bluemix 网站上更新 node-red
- c# - ASP.NET 导航按钮
- amazon-web-services - 自动与客户端共享来自 EC2 实例的单个文件夹
- json - 发送看起来要反序列化的格式化纯文本的 Json
- swift - stopAnimating 移除当前图像