__init __()有什么区别?

时间:2017-04-19 16:35:04

标签: python init

我是学习编程和从Python开始的新手。我已经阅读了在类中使用 init ()函数并在某种程度上理解它的实用程序。但是,我仍然有点困惑,希望有人能澄清一下。

所以我有两组初步代码给出相同的输出,但是一个使用 init ()。第一个如下:

class person:
    def who(self, name):
        print('I am', name)

name=str('Joe')
person().who(name)

第二个在这里:

class person:
    def __init__(self, name):
        self.name = name

    def who(self):
        print('I am', self.name)

p = person('Joe')
p.who()

我的基本问题是,在我的代码的一般情况下,如果我采用第一种方法而不是第二种方法,或者我将通过第二种方法获得的内容,我会错过什么(在某些阶段可能会更复杂)。

谢谢!

PS:我的问题不是 init ()的意思(虽然这是相关的,当然我感兴趣),但为什么要使用 init ()使代码更好。

1 个答案:

答案 0 :(得分:3)

我相信你错过了课程的主要目的:提供一个有凝聚力和模块化的数据和功能组。

您创建了一个班级人员,以便一个人掌握哪些信息? 例如,她的名字,生日和性别。

这是__init__()的用途,它是一种内置方法,用于在出生后初始化一个人(即实例化时)。 例如,创建一个人后,你必须给它一个名字,一个生日和一个性别。因此,__init__()强制始终将人员初始化为有效状态。这意味着你可以去街上并询问你遇到的任何人的名字,同时确保每个人都有一个。

至于你的第二个例子,更有意义的是,要求一个不知名的人名,或告诉她她的名字应该是什么?