python笔记——__init__方法与self详解

前后都加双下划綫的方法在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”的英文意思很明显,是自己的意思。

这里自己隐含的含义是

  1. 指的是,实例Instance本身。

  2. 同时, 由于说到“自己”这个词,都是和相对而言的“其他”而说的;而此处的其他,指的是,类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

  • 30
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值