从类中输出对象

时间:2017-12-11 20:08:29

标签: python class object printing output

我试图输出一个对象的细节,在这种情况下(一个人),整个代码在下面

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 个答案:

答案 0 :(得分:1)

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

  • 缩进不正确。 import { AlertMock } from ... ... messageAlert: AlertMock; errorAlert: AlertMock; 之后和class Person:之前的所有代码都应该向右缩进一次,或者通常是四个空格。

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

  • 您尚未定义person = Person()。将其添加到您的班级定义中。

    _is_valid_date()

此外,许多人发现使用&#34; setter&#34;和&#34; getters&#34;在Python糟糕的风格。当您了解如何使用def _is_valid_date(self, *args): return True 获取和设置内部状态变量时,请考虑。