如何返回类变量中的所有值?

时间:2019-01-13 07:59:16

标签: python-3.x

我正在用Python编写文本冒险游戏,并且对如何列出Room类中的所有项目感到好奇

我是Python的新手,实践非常有限。

# Declaring items and assigning them rooms

dingus = Item("Dingus", "This really dings.")
room["garden"].add_item(dingus)
flippers = Item("Flippers", "Webbed in nature.")
room["garden"].add_item(flippers)

# Declare all the rooms

room = {
    'garden':   Room("Garden",
                 """The flowers are blooming wonderfully. To the south lies a dark path.""")
}


class Room:

    def __init__(self, title, description):
        self.title = title
        self.description = description
        self.items = []
        self.items_in_room = ''

    def __repr__(self):
        print(f"-" * 40)
        return (f"You are at the {self.title}.")

    def add_item(self, item):
        return self.items.append(item)

    def list_items_in_room(self):
        for item in self.items:
            self.items_in_room += item
        ', '.split(self.items)
        return self.items


class Item:
    def __init__(self, name, description):
        self.name = name
        self.description = description

    def __str__(self):
        return f'{self.name} - {self.description}' + '\n' + "-" * 40

我希望Room.list_items_in_room以逗号分隔的字符串列出会议室中的所有项目。

1 个答案:

答案 0 :(得分:1)

我已经重新排列了您的代码,还更改了功能list_items_in_room。另外,已将__str__函数更改为__repr__并删除了'-' * 40(我不明白为什么会这样)。

class Room:
    def __init__(self, title, description):
        self.title = title
        self.description = description
        self.__items = []
        # __ so that it's not modifiable without getter and setter functions

    def __repr__(self):
        print(f"-" * 40)
        return (f"You are at the {self.title}.")

    def add_item(self, item):
        return self.__items.append(item)

    def list_items_in_room(self):
        return self.__items

class Item:
    def __init__(self, name, description):
        self.name = name
        self.description = description

    def __repr__(self):
        return f'{self.name} - {self.description}'


# Declare all the rooms
room = {
    'garden':   Room("Garden",
                 """The flowers are blooming wonderfully. To the south lies a dark path.""")
}

dingus = Item("Dingus", "This really dings.")
room["garden"].add_item(dingus)
flippers = Item("Flippers", "Webbed in nature.")
room["garden"].add_item(flippers)
print(room['garden'].list_items_in_room())

输出:

[Dingus - This really dings., Flippers - Webbed in nature.]