【问题标题】:printing elements from superclass in python从python中的超类打印元素
【发布时间】:2012-06-19 18:39:55
【问题描述】:

嗨,我有以下超类

class Room:
    def __init__(self,building,floor,number):
        self.building=building
        self.floor=floor
        self.number=number
    def __str__(self):
        return (str(self.building)+'.'+str(self.floor)+'.'+str(self.number))

和下面的子类

class Occupant(Room):
    def __init__(self,familyname,givenname,building,floor,number):
        self.familyname=familyname
        self.givenname=givenname
        Room.__init__(self,building,floor,number)
    def __str__(self):
        return (str(self.familyname)+', '+str(self.givenname)+......)

子类如何打印超类中的元素。当我从类 Occupant 打印对象时,我应该添加到(.....)以获取正确的输出。谢谢

【问题讨论】:

  • occupant 作为room 的子类毫无意义。请不要这样滥用继承。

标签: python class inheritance python-3.x


【解决方案1】:

Occupant 似乎是一个人,而 Room 是一个位置。 如果是这样,那么说OccupantRoom 的类型是没有意义的。所以Occupant 不应该是Room 的子类。相反,Occupant 有一个 Room:

class Room:
    def __init__(self, building, floor, number):
        self.building = building
        self.floor = floor
        self.number = number
    def __str__(self):
        return (str(self.building)+'.'+str(self.floor)+'.'+str(self.number))

class Occupant:
    def __init__(self, familyname, givenname, room):
        self.familyname = familyname
        self.givenname = givenname
        self.room = room

    def __str__(self):
        return '{f}, {g} -- {r}'.format(f = self.familyname, g = self.givenname, r = self.room)

room = Room('Building', 'Floor', 'Num')
occ = Occupant('Family', 'Given', room)
print(occ)
# Family, Given -- Building.Floor.Num

【讨论】:

  • 绝对正确!非常感谢 1 分钟后我点击正确
猜你喜欢
  • 2012-02-07
  • 2018-09-07
  • 2019-08-03
  • 1970-01-01
  • 2011-10-11
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多