python31days

发布时间 2023-10-10 17:23:04作者: 拆尼斯、帕丁顿

组合

反射(通过字符串来操作属性)

     getattr

        setattr  

            hasattr

                delattr

魔术方法(内置方法,双下划线开头的方法)

异常

——————————————————————————————————————————————————————————

什么是组合? 组合就是,一个对象拥有一个属性,该属性的值是另外一个对象

.

 

 

 

 

 

———————————————————————————————————————————————————————————

  

 

  • getattr(object, name[, default]): 获取对象属性值,如果属性不存在则返回默认值(可选)。
  • setattr(object, name, value): 设置对象属性值。
  • hasattr(object, name): 判断对象是否有属性。

 

  —————————————————————————————————————————内置魔术

双下划线开头得方法,满足一定的条件就会自动触发,

__init__:类实例化时自动执行,无需调用

 

 

__del__:构造器,当一个实例被销毁时自动执行,无需调用

 

 

__str__,    返回值必须是字符串形式   

__repr__      同时存在时  str 优先级高

当未定义__str__和__repr__方法时,print实例时输出的是实例的地址;当定义上述两种方法时,输出的是其返回值,并且__str__方法优先级高于__repr__方法即同时定义两种方法,只执行__str__方法。

关于两种方法的区别,__repr__方法的目的是准确性,其结果是让解释器用的;__str__方法的目的是可读性

 

__doc__无法继承

__enter__,__exit__

为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__,__exit__ 方法

 

1.什么是with?
with是一种上下文管理协议,包含方法 __enter__() 和 __exit__(),支持该协议的对象要实现这两个方法。

2.为什么要用with?
有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。

正常情况下我们处理一个文件要打开,读取,然后关闭。这就有可能会出现两个问题

文件读取时发生异常,但是我们没有进行处理
忘记关闭文件
当前我们可以用try,except ,finally来进行操作,但是代码过于冗杂,这时我们就可以用with了。

 

 

 __setatter__

__delatter__

__getatter__

 

 

 

__setitem__

__getitem__

__delitem__