我是编程新手,所以如果这很明显,请耐心等待。
我在同一个* .py文件中有两个类。片段在下面。我正在尝试与客户一起模拟电梯,在主程序中我将创建n个客户。我想电梯类中的方法,称为startLift,能够访问客户的各个实例,但我不确定如何做到这一点,所以如果我遍历我的客户,在每次迭代时调用startLift,我该如何制作所以它引用了这个实例。
提前谢谢。
班级电梯:def __init__(self):
self.stops = building.getFloors(redbrick)
if self.stops <1:
print "elevator out of bounds"
else:
print "elevator has ",building.getFloors(redbrick),"stops"
我尝试重新解释这个问题:
self.stops = building.getFloors(redbrick)
我在电梯类中调用建筑方法,因此建筑物将信息传递给电梯类,告知它可以行驶多少层。
“redbrick”是buliding类的一个实例,为了使其工作“building.getfloors(),我必须传递一个构建的实例,否则我得到
“必须使用构建实例作为第一个参数调用未绑定方法getFloors()”(没有取而代之)“
但如果我创建它,如何将建筑物的多个实例传递到“building.getfloors()”,例如
whitebrick = building()
redbrick = building()
yellowbrick = building()
答案 0 :(得分:1)
我打算在这里打破SO的基本规则,实际上并没有回答这个答案中的问题,但是这个评论太长了。
部分问题似乎是对类和实例如何使用python或一般编程的误解(这没有什么不妥,我们都学习了一段时间)。结果,你的问题是有效的,但是很尴尬,所以让我们退一步。
电梯的当前 init ()方法并没有按照描述的那样正常工作。要访问建筑物,您必须将其提供给电梯的 init ()。例如,您的Building和Elevator类(我正在利用它来表明它是一个类,而不是该类的实例),可能如下所示:
class Building:
def __init__(self, floors=1, color=None):
self.floors = floors
self.color = color
def getFloors(self):
return self.floors
class Elevator:
def __init__(self, building):
self.stops = building.getFloors()
self.current_floor = 1
然后,在您的主程序中,您将拥有类似的内容:
redbrick = Building(floors=4, color='red')
redbrick_elevator = Elevator(redbrick)
注意我的大写约定 - building是电梯的 init ()方法的参数,并且是Building类的一个实例。当我调用方法getFloors()时,它会在实例上调用,而不是在类中调用,而实例redbrick会自动作为self传递给getFloors()。
现在,您的旧(预编辑)客户类很好(但我称之为客户)。但是调用电梯的方法不起作用,因为客户没有被传入。例如,你可能有类似的东西:
class Elevator:
def __init__(self, building):
self.stops = building.getFloors()
self.current_floor = 1
self.customer_list = []
self.stop_list = []
def getCurrentFloor(self):
return self.current_floor
def callElevator(self, floor):
self.stop_list.append(floor)
def getOn(self, customer):
self.customer_list.append(customer)
self.stop_list.append(customer.getEndFloor())
def letOff(self):
for customer in self.customer_list[:]:
if self.current_floor == customer.getEndFloor():
self.customer_list.remove(customer)
...
希望这足以让你开始,既有关于类和实例如何在python中工作的一些想法,也有一种简单的方法来存储不同类的实例之间的关系。