我正在学习Python编程语言,我遇到了一些我不完全理解的事情。
在这样的方法中。
def method(self, blah):
def __init__(?):
....
....
自身 "是做什么的? 它的作用是什么? 它是强制性的吗?
__init__
方法是做什么的? 为什么它是必要的?(等等)。
我认为它们可能是OOP结构,但我不太了解。
在这个代码中。
class A(object):
def __init__(self):
self.x = 'Hello'
def method_a(self, foo):
print self.x + ' ' + foo
... self
变量代表对象本身的实例。 大多数面向对象的语言把它作为一个隐藏的参数传递给定义在对象上的方法;Python则不然。 你必须明确地声明它。 当你创建一个A
类的实例并调用它的方法时,它将被自动传递,如在 ...
a = A() # We do not pass any argument to the __init__ method
a.method_a('Sailor!') # We only pass a single argument
__init__
方法大致上代表了Python中的构造函数。 当你调用 A()
时,Python 为你创建一个对象,并把它作为第一个参数传给 __init__
方法。 任何额外的参数 (例如,A(24, 'Hello')
) 也将作为参数被传递--在这种情况下,会引发一个异常,因为构造函数并不期望它们。
是的,你是对的,这些都是OOP结构。
init__
是一个类的构造函数。 self
参数指的是对象的实例(像C++中的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
你的x'和
y'参数将被保存在堆栈的变量中,当init方法超出范围时将被丢弃。 将这些变量设置为self._x
和self._y
会将这些变量设置为Point
对象的成员(在对象的生命周期内可以访问)。