2

だから私はPythonでこのクラスを持っています

class room (object):

    def __init__(self,number):
        self.room_number=number

    def get_room_num(self):
        return self.room_number

また、House という別のクラスがあります。基本的に家オブジェクトを作成するときに、家の部屋オブジェクトも作成する必要があり、部屋の数はユーザーが選択します。

動的オブジェクトを作成するのが困難です (ユーザーが指定するため、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()
4

2 に答える 2

6
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
于 2012-06-07T03:43:20.577 に答える