【问题标题】:super().__repr__() not returning expected resultssuper().__repr__() 未返回预期结果
【发布时间】:2018-05-06 23:20:46
【问题描述】:
class Person:
    def __init__(self, nameInput, addressInput, dateOfBirthInput):
        self._name = nameInput
        self._address = addressInput
        self._dateOfBirth = dateOfBirthInput
    def getName(self):
        return self._name
    def getAddress(self):
        return self._address
    def getDateOfBirth(self):
        return self._dateOfBirth
    def __repr__(self):
        return 'Name: %s \nAddress: %s \nDate of Birth: %s' % (self._name, self._address, self._dateOfBirth)

如果我输入kat = Person('CC','9th Street','1990') 之类的内容,第一堂课将正确输出。但是当我尝试从子类中调用它时,我无法让它正常工作,它只会把所有内容都留空。

from Person import Person

class Employee(Person):
    def __init__(self, nameInput, addressInput, dateOfBirthInput, employeeNumberInput, dateOfHireInput):
        super().__init__(nameInput, addressInput, dateOfBirthInput)
        self._employeeNumber = employeeNumberInput
        self._dateOfHire = dateOfHireInput
    def getEmployeeNumber(self):
        return self._employeeNumber
    def getDateOfHire(self):
        return self._dateOfHire
    def __repr__(self):
        return super().__repr__() + '\nEmployee Number: %s \nDate Of Hire: %s' % (self._employeeNumber, self._dateOfHire)

如果我在上面的块中输入类似kat = Employee('CC','9th Street','1990','12345','2017') 的内容,我什么也得不到,我是否遗漏了一些明显的东西,我已经用几种不同的方式重写了它来匹配示例,但我的方式和示例都不适合我。

【问题讨论】:

  • 如何打印? repr(kat)?
  • print(kat) 是我正在使用的,但我尝试了 repr(kat) 并且得到了相同的结果。
  • 无论如何都不要使用__repr__。它不应该用于呈现格式化数据。

标签: python class init super repr


【解决方案1】:

在您的 Employee 类中执行此操作

class Employee(Person):
...:     def __init__(self, nameInput, addressInput, dateOfBirthInput, employeeNumberInput, dateOfHireInput):
...:         super(Employee, self).__init__(nameInput, addressInput, dateOfBirthInput)
...:         self._employeeNumber = employeeNumberInput
...:         self._dateOfHire = dateOfHireInput
...:     def getEmployeeNumber(self):
...:         return self._employeeNumber
...:     def getDateOfHire(self):
...:         return self._dateOfHire
...:     def __repr__(self):
...:         return super(Employee, self).__repr__() + '\nEmployee Number: %s \nDate Of Hire: %s' % (self._employeeNumber, self._dateOfHire)

这将适用于您的模块

【讨论】:

  • 这没有任何改变。
  • @cᴏʟᴅsᴘᴇᴇᴅ 我添加了super(Employee, self) ,它对我有用
【解决方案2】:

所以经过一番摆弄之后,它似乎根本没有任何问题,它是否运行似乎取决于我运行它的方式。我在 Visual Studio 中编写了它,但它在其中不起作用,但是当我将它推到 Idle 时它工作正常。

【讨论】:

  • 听起来好像您的 Visual Studio 可能已针对 Python 2 进行了配置。
猜你喜欢
  • 2011-08-09
  • 2010-09-22
  • 2021-05-17
  • 2018-02-19
  • 2018-03-23
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多