类与对象总结(魔法方法)

class Cat:

    def eat(self):  # 类里方法的第一个形参,必须是 self
        print('我能吃东西')

类里面方法的第一个参数必须为self,self代表类的实例,而非类。
同一个类的两个实例对象,地址不同

魔法方法:

_new_(): 对象的创建,是一个静态方法,第一个参数是cls。(想想也是,不可能是self,对象还没创建,哪来的self)
_init_ (): 对象的初始化, 是一个实例方法,第一个参数是self。

_new_()方法在类定义中不是必须写的,如果没定义,默认会调用object._new_()去创建一个对象。如果定义了,就是override,可以custom创建对象的行为。
定义单例模式时,因为自定义的_new_()重载了父类的_new_(),所以要自己显式调用父类的_new_(),即object._new_(cls, *args, **kwargs),或者用super()。
_init_ ()方法通常用在初始化一个类实例的时候。子类重写init方法时,如果不显式调用父类_init_()方法,子类对象调用父类的方法时,会有异常。

创建对象后,python解释器默认调用_init_()方法。当删除一个对象时,python解释器也会默认调用一个方法,这个方法为_del_()方法。在python中,对于开发者来说很少会直接销毁对象(如果需要,应该使用del关键字销毁)。Python的内存管理机制能够很好的胜任这份工作。也就是说,不管是手动调用del还是由python自动回收都会触发_del_()方法执行:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值