python高级编程之魔术方法

https://blog.csdn.net/weixin_45912307/article/details/108965633

魔术方法

  1. 魔术方法: __名字__()
1. __init__(self) 初始化魔术方法

触发时机: 初始化对象时触发(不是实例化触发,但是实例化在一个操作中)

def 类名():
	def __init__(self):
		self.属性名=属性值
	def call(self):
		print(self.属性名)
对象名 = 类名()
对象名.call()
2.__new__实例化魔术方法

向内存申请地址空间再将地址retrun给__init__
触发时机: 在实例化时触发

def 类名():
	def __init__(self,属性名):
		self.属性名=属性名
        [属性名 = 属性值]
	def __new__(cls,*args,**kwargs):
		return object.__new__(cls)
对象名 = 类名(属性值)
3.__call__对象调用方法

触发时机: 将对象当成函数使用的时候,会默认调用此函数中内容

def __call__(self,属性名):
    print('{}'.format(属性名))
对象名(属性值)
4. __del__析构函数方法
def __del__(self):
    pass
  1. 对象赋值
p = Person()
p1 = p
# 说明:p和p1共同指向同一个地址
  1. 删除地址的引用
    del p1 删除p1对地址的引用

  2. 查看对地址的引用次数:

import sys
sys.getrefcount(p)
  1. 当一块空间没有了任何引用,默认执行__del__
    ref = 0
5. __str__(self)

触发时机: 打印对象名,自动触发去调用__str__里面的内容
触发方式

  • print(obj)
  • format(obj)
  • str(obj)

注意: 一定要在__str__方法中添加return,return后面内容就是打印对象看到的内容

6. __repr__

触发方式:

  • repr(obj)
  • obj
7. __getattr__ 获取属性

触发时机:访问属性时,如果属性不存在(出现AttrError),该方法会被触发

8. __getattribute__

触发时机:访问属性的时候,第一时间触发该方法去找属性

9. __setattr__

触发时机:给对象设置属性时触发

10.__delattr__

触发时机:删除属性时被触发

6. 魔术方法总结

重点掌握:
__str__ 打印对象名,自动触发去调用__str__里面的内容
__init__(self,参数名) 初始化方法,通过类创建对象时,自动触发执行
__new__() 开辟空间
了解
``
__del__() 没有指针引用的时候会调用,99%不需要重写
__call__() 对象像函数一样调用的时候触发(通过类实现装饰器)
__doc__ 类的描述信息
__module__ 表示当前操作的对象在哪个模块
__class__ 表示当前操作的对象的类是什么
__del__ 当对象在内存中被释放时,自动触发执行
__dict__ 类或对象中的所有属性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值