Python新手:任何人都知道__init __(self)的作用是什么? (简单的探索。拜托!)

时间:2012-07-26 16:33:44

标签: python init self

  

可能重复:
  Python init and self what do they do?

任何人都可以解释__init__(self)的作用吗?我一直在读其他问题和人们提到超级课程?什么是超级课程?我认为程序应该从

开始
def print_word(word):
    print word

__init__(self)是某种特殊情况,因为它有下划线和“自我”吗?抱歉没有具体的术语......还在学习。

5 个答案:

答案 0 :(得分:8)

__init__(self)是在所谓的“类”中使用的特殊函数。 Classes允许您定义自己的数据类型/对象,并且在创建已定义的数据类型/对象的新实例时调用此__init__函数。这就像说“嘿,每次你做这些事情之一,确保你也运行这个代码”。在面向对象的编程中,我们将这种函数称为“构造函数”。它是一个用于“构造”新对象的函数。 self是对实际创建的对象的引用。换句话说,在您到达__init__函数时,该对象在技术上已经创建。 __init__只是让您有机会初始化对象的各个方面(因此名称为__init__)。

Python是功能,程序和面向对象范例的混合体。此__init__业务与对象有关。有关面向对象编程的更多信息,您可以查看wikipedia article

答案 1 :(得分:4)

__init__是Python中类的constructor。在类中由__括起来的方法具有特殊含义(构造,运算符实现等)。

答案 2 :(得分:3)

可能重复:Python __init__ and self what do they do?

def print_word(word)是一个函数(或方法/过程)。 __init__(self)中使用的函数。

这个关于类的Python教程的section描述了__init__函数。我强烈建议您阅读整页,顺便说一句。

self是一个单词的任意选择,用于指代类本身;如果您愿意,可以使用watermelon。请参阅:What is the purpose of self?

用双下划线包装的Python类函数具有特殊含义。另一个例子是__str__。这个section的PEP8(一个重要的Python风格文档)解释了Python中下划线的含义。


超类:

答案 3 :(得分:1)

要了解__init__(self, ...)的作用,首先要了解课程。

一个类基本上定义了一种对象。例如,如果我想定义Fish的行为方式,我可能会从某种形式开始

class Fish:
    def swim(self):
        print "I'm swimming!"
    def breathe(self):
        print "I'm breathing!"

然而,这不是一个非常有用的课程,因为虽然我们已经定义了Fish可以做什么,但我们不知道如何存储Fish的其他基本品质。 1}},例如它有多重。

原则上,如果我有一个名为Fish的{​​{1}},我就可以

f

但如果我忘记为某些f.weight = 3 执行此操作,请说Fish名为Fish,然后尝试在表达式中使用g,Python将不会非常高兴 - 它会g.weight抱怨AttributeError

为了避免这种情况,我们可以为我们的类定义一个构造函数,每次创建一个新的Fish instance has no attribute 'weight'时,都会设置其权重和颜色以及您定义的任何其他属性等属性。合理的默认值。在Python中,此构造函数称为Fish。只要您在类中定义它,就会在每次创建该类的新实例时调用它。

__init__

您为类定义的每个函数都使用隐含参数,我们通常将其标记为class Fish: def __init__(self): self.weight = 3 def swim(self): print "I'm swimming!" def breathe(self): print "I'm breathing!" 。第一个参数始终设置为您调用该函数的实例。例如,如果我调用

self

Python创建f = Fish() f.swim() ,将其放入Fish,然后在其上调用fFish.__init__(f)。在这种情况下,Fish.swim(f)中的Fish将其权重设置为3并将导致“我正在游泳!”打印。

您可以创建不需要采用f参数的类函数,称为静态函数,但这些函数仅对您可能不会遇到的特定情况有用。而。 Python中的类函数通常是实例函数,它将隐式采用self参数。

请注意,在上面的示例中,创建的每个 self都将其默认权重设置为3.如果我们要指定Fish的权重,该怎么办?创作的时间?好吧,我们可以定义Fish来获取一些额外的参数:

__init__()

请注意,class SuperFish: def __init__(self, weight = 3): self.weight = weight 参数的默认值定义为3.因此,实际上我们可以指定权重。如果我们刚刚说过weight,那么就需要指定权重。

我们现在可以执行以下任何一种调用:

def __init__(self, weight):

希望能为你解决问题:)

答案 4 :(得分:0)

self指向对象本身,__init__初始化“self”字段的构造函数。 例如,您正在创建一个Person类,其中包含“name”和“age”字段。在__init__中,您可以通过执行以下操作将默认名称设置为“Bob”并将年龄设置为36

def __init__(self):
    self._name = "Bob"
    self._age = 36

这样,每次创建一个新的Person对象时,默认名称和年龄将设置为“Bob”和36。