前后都加双下划綫的方法在python中是独一无二的,加下划线的目的在于避免与普通方法名称冲突。
本文中主要深入理解在定义类的时候必须用到的__init__方法。
在进行详细叙述之前,给大家普及一下,类中的方法和属性。
- 方法:也就是各类中定义的函数,比如我们定义一个车的类,描述车的函数就是一个方法。
- 属性:车的品牌、型号、生产日期等信息就是它的属性
1、__init__方法:无需直接调用,生成实例对象的时候自动调用。
“init”的全称是“initialize”,也就是初始化的意思,所以__init__又称构造方法。
在定义类的时候__init__()方法是必不可少的。
init()这种初始化方法,用来初始化新创建对象的属性,在一个对象被创建以后会立即调用,比如像实例化一个类:
demo
class
Car
(
)
:
def
__init__
(
self
,
make
,
model
,
year
)
:
###
self
.
make
=
make
self
.
model
=
model
self
.
year
=
year
my_car
=
Car
(
'aodi'
,
'A4'
,
'2010'
)
print
(
my_car
.
model
)
aodi
程序中没有直接调用__init__方法,但make,model,year等属性通过Car()类自动调用了__init__方法,生成了属性。
2、self参数
“self”的英文意思很明显,是自己的意思。
这里自己隐含的含义是
-
指的是,实例Instance本身。
-
同时, 由于说到“自己”这个词,都是和相对而言的“其他”而说的;而此处的其他,指的是,类Class,和其他变量,比如局部变量,全局变量等。
此处的self,是个对象(Object),是当前类的实例。
因此,对应的self.valueName 和 self.function()中的valueName:表示self对象,即实例的变量。与其他的,Class的变量,全局的变量,局部的变量,是相对应的。
function:表示是调用的是self对象,即实例的函数。与其他的全局的函数,是相对应的。
因为Python已经规定:函数的第一个参数,就必须是实例对象本身,并且约定俗成,把其名字写为self。因此我们再定义类中的所有函数时必须传入self参数。
demo
class
Car
(
)
:
def
__init__
(
self
,
make
,
model
,
year
)
:
###
self
.
make
=
make
self
.
model
=
model
self
.
year
=
year
def
get_descriptive_name
(
self
)
:
long_name
=
self
.
year
+
' '
+
self
.
make
+
" "
+
self
.
model
print
(
self
)
###看下self指向哪里
print
(
type
(
self
)
)
###看下self类型是什么
return
long_name
my_car
=
Car
(
'aodi'
,
'A4'
,
'2010'
)
my_car
.
get_descriptive_name
(
)
输出内容:
<
__main__
.
Car
object
at
0x000001D31F7408D0
>
##可以看出self指向的是一个对象,也就是我们用my_car的实例对象 == self
<
class
'__main__.Car'
>
## self的类型是Car类的实例对象
'2010 aodi A4'
参考文献:https://www.cnblogs.com/ant-colonies/p/6718388.html