所以我在 python 中有这个类
class room (object):
def __init__(self,number):
self.room_number=number
def get_room_num(self):
return self.room_number
我还有另一个类叫房子,基本上当我创建房子对象时,我还需要为房子创建房间对象,房间的数量将由用户选择。
我很难创建动态对象(因为它是由用户指定的,我们会有 1 个房间或 10 个房间),我不能给每个房间对象一个名字,因为我不知道之前有多少手。
所以我试过这样
class House (object):
def __init__(self,num_of_rooms):
self.room_holder=[]
for i in range(num_of_rooms):
self.room_holder.append(room(i))
def __iter__(self):
return iter(self.room_holder)
有更好的方法吗?如果有请帮忙
iter 函数在那里,所以我可以迭代它,例如
mansion=House(10)
for i in mansion:
print i.get_room_num()
请您参考如下方法:
class Room(object): # note: class name is Capitalized
def __init__(self, number):
self.number = number
# get_ methods are non-Pythonic.
# If you need to do some processing to retrieve room number,
# make it a @property; otherwise, just use the field name
class House(object):
def __init__(self, num_rooms):
# I assume you don't want a room 0?
self.rooms = [Room(i) for i in range(1, num_rooms+1)]
def __iter__(self):
return iter(self.rooms)
mansion = House(10)
for room in mansion:
print room.number
