魔法方法

魔法方法

魔法方法是一种方法,它总是被双下划线包围,如__init__.

魔法方法的“魔法”之处体现在:它们总能够在适当的时候被自动调用。

魔法方法的第一个参数为cls(类方法)或者self (实例方法)。

  • cls:代表一个类的名称
  • self:代表一个实例对象的名称。

下面介绍几个基础的魔法方法:

  1. __init__(self[,...])
    这个方法是在初始化对象的时候用的,用法如下:
class Restaurant():
    def __init__(self,restaurant_name,cuisine_type,number_served=0):
        self.restaurant_name=restaurant_name
        self.cuisine_type=cuisine_type

下面运行一下:

>>> my_restaurant=Restaurant("北京饭店","各大菜系")
>>> my_restaurant.restaurant_name
'北京饭店'

2.__new__
init 构造器,当一个实例被创建的时候初始化的方法。但是它并不是实例化调用的第一个方法,__new__才是实例化对象调用的第一个方法,它只取下 cls参数,并把其他参数传给 init。 __new__很少使用,但是也有它适合的场景,尤其是当类继承自一个像元组或者字符串这样不经常改变的类型的时候。

new 使用时注意以下四点:

 1. __new__ 是在一个对象实例化的时候所调用的第一个方法
 2. 它的第一个参数是这个类,其他的参数是用来直接传递给 __init__ 方法
 3. __new__ 决定是否要使用该 __init__ 方法,因为 __new__ 可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果 __new__ 没有返回实例对象,则 __init__ 不会被调用
 4. __new__ 主要是用于继承一个不可变的类型比如一个 tuple 或者 string
 5. __new__ return的是一个构建的实例

另外,Python中还有以下常用的魔法方法:
call(self[,args…])
getitem(self,key)
setitem(self,key,value)
getattr(self,name)
getattribute(self,name)
setattr(self,name,value)
delattr(self,name)
get(self,instance,owner)
set(self,instance,value)
delete(self,instance)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值