在C++和Java编程语言的面向对象程序代码中,__init__是默认的构建方法,用于初始化一个对象的状态,如创建类的对象时给类成员赋值;与诸多方法一样,构建方法通常都包括特有的指定命令集或语句并且在创建对象时执行,即完成类对象的实例化。在python语言进行面向对象编程OOP时,都会遇到 __init__ 方法,新手一般都没有仔细深究和注意,也说不上理解。本文将通过使用示例对__init__方法做比较全面的讲解,理解本文内容需要了解python中编写面向对象代码时的三个概念:Class(类)、Object(对象) 和 self 参数(可阅读文章《python 代码中 self 是什么,有什么用途?》)
下面看一小段示例代码,定义Person类,同时定义该类的init方法,对类的对象进行初始化:
# 定义 Person 类,同时定义该类的 init 方法
class Person:
# init 方法
def __init__(self, name):
self.name = name
# 自定义方法
def say_hi(self):
print('你好, 我是 ', self.name)
p = Person(' 007 ')
p.say_hi()
输入结果: 你好, 我是 007
以上代码段中,创建 person 类的对象时, 名字 “007” 就作为参数传递给 __init __ 方法,完成该对象的初始化。参数 self 代表类的实例,并且绑定了传入的参数作为类的属性,当然参数可以是不同的名字。
既然 init 方法是类的方法,那自然可以继承,看下面一小段示例代码:
# Python 面向对象代码中 如何继承 __init__ 方法
class A(object):
def __init__(self, something):
print(" 调用 A init ")
self.something = something
class B(A):
def __init__(self, something):
# 调用父类的 init
A.__init__(self, something)
print("调用 B init")
self.something = something
obj = B("Something")
输出结果:
调用 A init
调用 B init
从以上代码可以看出,先调用了父类的构建方法,但是在python中这种情况并不是一贯的,其调用顺序是可以修改的,只需要在子类的构建方法之后调用父类的构建方法,以上代码中调用 init 方法的顺序就会改变,示例代码如下:
class A(object):
def __init__(self, something):
print("调用 A init ")
self.something = something
class B(A):
def __init__(self, something):
print("调用 B init")
self.something = something
# 调用父类的 init
A.__init__(self, something)
obj = B("Something")
输出结果:
调用 B init
调用 A init

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/76248
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!