__init__和自我在Python中做什么?
我正在学习Python编程语言,我遇到了一些我不完全理解的东西。
在如下方法中:
def method(self, blah):
def __init__(?):
....
....
有什么作用?它意味着什么?它是强制性的吗?self
该方法有什么作用?为什么有必要?(等)__init__
我认为它们可能是OOP结构,但我不太了解。
我正在学习Python编程语言,我遇到了一些我不完全理解的东西。
在如下方法中:
def method(self, blah):
def __init__(?):
....
....
有什么作用?它意味着什么?它是强制性的吗?self
该方法有什么作用?为什么有必要?(等)__init__
我认为它们可能是OOP结构,但我不太了解。
在此代码中:
class A(object):
def __init__(self):
self.x = 'Hello'
def method_a(self, foo):
print self.x + ' ' + foo
...变量表示对象本身的实例。大多数面向对象的语言将其作为隐藏参数传递给对象上定义的方法;Python没有。您必须显式声明它。当您创建该类的实例并调用其方法时,它将自动传递,如...self
A
a = A() # We do not pass any argument to the __init__ method
a.method_a('Sailor!') # We only pass a single argument
该方法大致表示Python中的构造函数。调用 Python 时,会为您创建一个对象,并将其作为第一个参数传递给该方法。任何其他参数(例如,)也将作为参数传递 - 在这种情况下,会导致引发异常,因为构造函数不期望它们。__init__
A()
__init__
A(24, 'Hello')
是的,你是对的,这些都是oop结构。
__init__
是类的构造函数。该参数引用对象的实例(如C++)。self
this
class Point:
def __init__(self, x, y):
self._x = x
self._y = y
在为对象分配内存后调用该方法:__init__
x = Point(1,2)
如果要将值与对象一起持久化,则在对象的方法中使用该参数非常重要。例如,如果您像这样实现该方法:self
__init__
class Point:
def __init__(self, x, y):
_x = x
_y = y
您的 和 参数将存储在堆栈上的变量中,并在 init 方法超出范围时被丢弃。将这些变量设置为对象的成员(在对象的生存期内可访问)。x
y
self._x
self._y
Point
注意:贝对本答案中“构造函数”一词的使用进行了一些澄清。从技术上讲,“构造函数”的职责在Python中分为两个方法。这些方法__new__
(负责分配内存)和__init__
(如此处所述,负责初始化新创建的实例)。