任何人都可以解释__init__(self)
的作用吗?我一直在读其他问题和人们提到超级课程?什么是超级课程?我认为程序应该从
def print_word(word):
print word
__init__(self)
是某种特殊情况,因为它有下划线和“自我”吗?抱歉没有具体的术语......还在学习。
答案 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
,然后在其上调用f
和Fish.__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。