【问题标题】:Outputting objects from a class从类中输出对象
【发布时间】:2017-12-11 20:08:28
【问题描述】:

我正在尝试输出一个对象的详细信息,在这种情况下是(一个人),下面是整个代码

class Person:

    person = Person()

    def __init__(self):
        self._first_name = str ()
        self._last_name = str ()
        self._day = int ()
        self._month = int ()
        self._year = int ()

    def set_name(self, forename, surname):
        self._first_name = forename
        self._last_name = surname

    def get_name(self):
        return self._first_name + " " + self._last_name

    def set_dob(self, d, m, y):
        if self._is_valid_date(d, m):
            self._day = int(d)
            self._month = int(m)
            self._year = int(y)
        else:
            return "Invalid date entered."

    def get_dob(self):
        return "{0}-{1}-{2}".format(self._day, self._month, self._year)

    def get_age_at(self, d, m, y):
        age = -1
        if self.is_valid_date(d, m) and self._is_after_dob(d, m, y):
            age = y - self._year
            if (m < self._month) or (m == self._month and d < self._day):
                age -= 1
        return age

    def get_details(self):
        return "{0}, {1}".format(self.get_name(), self.get_dob())

john = Person()
john.set_name("John", "Lennon")
john.set_dob(8,10,1940)

print (john.get_details())

我希望 John Lennon 8 10 1940 能够输出

我明白了:

   line 1, in <module>
    class Person:
   line 3, in Person
    john = Person()
 NameError: name 'Person' is not defined

有什么想法吗?对python很陌生,所以任何帮助都会很棒谢谢!

【问题讨论】:

  • 1) 您的缩进不正确。请确保您的代码 sn-p 中的缩进与您的实际程序相匹配。请记住,在 Python 中,空格很重要。更改缩进会更改程序的语法。 2) 你希望person = Person() 在第 3 行做什么?
  • 删除顶部的person=Person()
  • 请注意,您的错误与您的代码不匹配。

标签: python class object printing output


【解决方案1】:

据我所知,您的程序有三个错误:

  • 缩进不正确。 class Person: 之后和john = Person() 之前的所有代码都应该向右缩进一停,或者按照惯例,缩进四个空格。

  • person = Person() 行不正确。删除它。

  • 您尚未定义_is_valid_date()。将此添加到您的类定义中。

    def _is_valid_date(self, *args):
        return True
    

此外,许多人发现在 Python 中使用“setters”和“getters”的方式很糟糕。考虑一下,当您了解如何使用 @propterty 获取和设置您的内部状态变量时。

【讨论】:

  • 类定义也缺少_is_after_dob() 方法。
  • 是的,但这不一定是 this 程序中的错误。该程序从不引用_is_after_dob()
猜你喜欢
  • 1970-01-01
  • 2011-02-21
  • 2016-03-11
  • 2016-01-10
  • 2014-12-04
  • 1970-01-01
  • 2017-04-23
  • 2019-04-12
  • 2019-11-05
相关资源
最近更新 更多