Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建类人物和祖先_Python_Class - Fatal编程技术网

Python 创建类人物和祖先

Python 创建类人物和祖先,python,class,Python,Class,您好,您有以下问题吗 创建一个类Person,以使用姓名、出生年份、死亡年份(如果此人仍然活着,则无),并引用表示此人父亲和母亲的其他两个Person对象来表示此人。该类应定义以下三种方法: 所有参数都具有默认值None的构造函数人员(姓名、母亲、父亲、出生、死亡) str返回字符串“name born dead” 祖先()返回一个元组(名称字符串、递归父祖先、递归母祖先)(参见下面的示例) 创建第二个类AnnotatedPerson,它是Person的子类,允许每个人都用注释进行注释,注释

您好,您有以下问题吗

创建一个类Person,以使用姓名、出生年份、死亡年份(如果此人仍然活着,则无),并引用表示此人父亲和母亲的其他两个Person对象来表示此人。该类应定义以下三种方法:

  • 所有参数都具有默认值None的构造函数人员(姓名、母亲、父亲、出生、死亡)
  • str返回字符串“name born dead”
  • 祖先()返回一个元组(名称字符串、递归父祖先、递归母祖先)(参见下面的示例)
创建第二个类AnnotatedPerson,它是Person的子类,允许每个人都用注释进行注释,注释可以作为构造函数的参数,并且将是str返回的字符串的一部分,即重新定义方法initstr。方法祖先应该从Person继承,而不是在AnnotatedPerson中重新定义。尽量避免重复超类中的代码,而是调用超类中的方法

因此,我是一个初学者,对编程有很大的兴趣。关于问题的第一部分,我有以下几点

class Person:
    def __init__(self,name, mother, father, born, died):
        self.name = None
        self.mother = None
        self.father = None
        self.born = None
        self.died = None
    def str(self):
        return print(("'%s', '%s'" %(self.name, self.born)))

benny = Person('Benny','grethe','ole',1999,'none')

print(benny.str())
但是没有给任何有用的东西。我哪里做错了?你能为问题的下一部分给出一个提示吗。 我在用Python写东西
提前感谢

您正在将所有值初始化为“无”,而不是将实际参数保存在构造函数中

class Person:
    def __init__(self, name = None, mother = None, father = None, born = None, died = None): # None if not specified
        self.name = name
        self.mother = mother
        self.father = father
        self.born = born
        self.died = died

    def __str__(self):
        return "{} {}".format(self.name, self.born) # returns string not None (return value of print())


benny = Person('Benny', 'grethe', 'ole', 1999) # died will be None
print(str(benny))
这样,如果在创建新对象时未指定所有参数,则所有参数都将为“无”。另外,返回print将为您提供
str()
中的值
None