在 python 中的另一个类中创建具有随机参数的类的实例



如何在另一个类中创建需要参数的类的实例,并随机生成参数?

在下面的代码中,我有一个"Square"类,它采用"高度"参数。然后,我基于"正方形"创建一个"立方体"。问题出在"CubeTower"类中的"add_cube"方法上,我无法确定我是否需要提供"立方体"和"高度"或仅提供其中一个参数。当我尝试在创建具有随机边高的立方体的循环中调用"add_cube"时,这反过来会引发错误。

(我在"Cube"类中还有其他方法,但它们与此问题无关,所以我没有包含它们(。

from random import randint
class Square:
def __init__(self, height):
self.height = height

class Cube:
def __init__(self, height):
self.base = Square(height)

class CubeTower:
def __init__(self):
self.tower = []

def add_cube(self, cube, height): # This is where I think I am doing something wrong
cube = Cube(height)
if not self.tower:
self.tower.append(cube)
else:
if cube.base.height < self.tower[-1].base.height:
self.tower.append(cube)

def randomize_tower(self):
for c in range(2, 100):
height = randint(1, 100)
c = Cube(height)
self.add_cube(c, height)

你可以做一个或另一个;一个方法不需要两个。

class CubeTower:
def __init__(self):
self.tower = []
def add_cube(self, cube: Cube):
if not self.tower or cube.base.height < self.tower[-1].base.height:
self.tower.append(cube)
def add_cube_by_height(self, height: int):
self.add_cube(Cube(height))       
def randomize_tower(self):
for _ in range(2, 100):
height = randint(1, 100)
# self.add_cube_by_height(height)
c = Cube(height)
self.add_cube(c)

add_cube_by_height实际上只是一个方便的包装add_cube,它为您创建了给定尺寸的Cube

最新更新