【问题标题】:Appending class instance to another class's list variable via methods通过方法将类实例附加到另一个类的列表变量
【发布时间】:2016-01-16 11:14:59
【问题描述】:

我想创建一个Band 类和一个Musician 类。我正在尝试将Musician 添加到Band。我正在使用 Python 2.7.6。

class Band(object):
    def __init__(self):
        self.members = []
    def hire_musician(self,member):
        self.members.append(member)
        print self.members


class Musician(object):
    def __init__(self, sounds,isDrummer):
        self.sounds = sounds
        self.isDrummer = isDrummer

    def solo(self, length):
        for i in range(length):
            print self.sounds[i % len(self.sounds)],
        print ""

class Drummer(Musician):
    def __init__(self):
        super(Drummer, self).__init__(["Hi", "Hat"],True)


Jingle = Band()
ruben = Drummer()

Jingle.hire_musician(ruben)

我得到的错误是

[<__main__.Drummer object at 0x7fb4785cba10>]

我做错了什么?

【问题讨论】:

  • 你为什么认为你做错了任何事情?您有一个包含鼓手的列表;你在期待什么?!
  • 我希望hire_musician 打印该乐队的音乐家名单。但是,我得到的结果并不是我想要的。
  • 正是它在做什么......再次,你期待什么结果
  • 啊。如何显示人类可读的成员列表?像鲁本、奈杰尔等。
  • 您需要实现__str__(字符串)和/或__repr__(表示)来告诉Python您希望如何显示实例。但请注意,Ruben 这个名字目前并未存储在实例中的任何位置......

标签: python list class object append


【解决方案1】:

这是一个简单的解决方案,只添加一个名称属性

class Band(object):
    def __init__(self):
        self.members = []
    def hire_musician(self,member):
        self.members.append(member)
        for member in self.members:
            print(member.name)

class Musician(object):
    def __init__(self, name, sounds,isDrummer):
        self.sounds = sounds
        self.isDrummer = isDrummer
        self.name = name

    def solo(self, length):
        for i in range(length):
            print(self.sounds[i % len(self.sounds)],)
            print('')

class Drummer(Musician):
    def __init__(self, name):
        super(Drummer, self).__init__(name, ["Hi", "Hat"],True)

Jingle = Band()
ruben = Drummer('ruben')
Jingle.hire_musician(ruben)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 2015-06-09
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多