Python魔法方法之__init__、__del__与__new__

在Python语言中,有些方法名比较特别,在名称的前后各有两个下划线,这样的方法往往具有特殊的意义,我们统称为魔法方法。需要注意的是,我们在创建自定义方法时要避免这样的格式,防止造成不必要的冲突和误解。

在正式了解魔鬼方法前,有必要给大家回顾下Python中函数和方法的区别。

  • 函数。类外部定义的,跟类没有直接关系的,如:def func(*argv)。
  • 方法。class内部定义的函数(对象的方法也可以认为是属性),分为两种:第一种人为自定义的方法,和普通函数没有区别,只是定义在了class中而已;第二种是Python自动产生的(魔法方法),一般形式为:__func__,Python会在对应的时机自动调用该函数,下面我们要学习的方法均为这一种。

1. __init__(self, *args, **kwargs)

最常用的魔法方法,在创建完对象后调用,对当前对象的一些实例初始化,无返回值,我们称之为构造方法,和C++中的构造方法类似。

先看下面一个例子,在Demo类中定义了__init__方法和一个普通方法func,然后在类定义外进行实例化。

class Demo:
    def __init__(self):
        print('调用__init__方法')

    def func(self):
        print('这是一个普通的方法')

d = Demo()

由于只对Demo进行了实例化,并没有主动调用任何方法,在我们的设想中,不会输出任何语句,但实际运行结果如下。

调用__init__方法

这个例子印证了上述:__init__方法在创建对象后被自动调用。

下面通过另外一个例子让大家理解构造方法的重要作用:对实例初始化。同样的,类中定义了__init__和func两个方法,但这次我们看到在__init__方法中添加了两个参数n和a,并将这两个值赋给成员属性self.name和self.age,在func方法中则使用了这两个成员属性。

在类外,对Demo实例化对象d1,并且传入实参‘小明’和23,细心的话可以发现,实例化Demo时和__init__方法的恰好都是两个参数。可以理解为,实例化操作Demo('小明',23)就是在调用__init__,这里的‘小明’和23也就传递给了形参n和a。d2对

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值