面向对象进阶(一)
一.classmethod与statimethod
classmethod:
翻译:一个类的方法
classmethod是一个装饰器,可以给装饰类内部的方法,使该方法绑定给类来使用.
---对象的绑定方法的特殊之处
由对象来调用,会将对象当作第一个参数传给该方法.
---类的绑定方法的特殊之处
由类来调用,会将类当作第一个参数传给该方法.
staricmethod:
staricmethod是一个装饰器,可以装饰给类内部的方法,是该方法既不绑定给对象,也不绑定给类.
二.isinstance与issubclass
isinstance:
python内置的函数,可以传入两个参数,用于判断参数1是否是参数2的一个实例.
---判断一个对象是否是一个类的实例
issubclass:
python内置的函数,可以传入两个函数,用于判断参数1是否是参数2 的子类.
---判断一分类是否是另一个类的子类
三.反射
反射:
指的是通过"字符串"对 对象或类的属性进行操作.
---hasattr:通过字符串,判断该字符串是否是对象或类的属性.
---getattr:通过字符串,获取对象或类的属性.
---setattr:通过字符串,设置对象或类的属性
---delattr:通过字符串,删除对象或类的属性
四.魔法方法
魔法方法:
凡是在类内部定义,以"__开头__结尾"的方法都称之为魔法方法,又称为"类的内置方法".魔法方法会在某些条件成立时触发.
--init--:在调用类时触发,
--str--:在打印对象时触发
--del--:对象被销毁前执行该方法,该方法会在最后执行.
--getattr--:会在对象.属性时,"属性没有"的情况下才会触发.
--setattr--:会在"对象.属性 = 属性值" 时触发.
--call--:会在对象被调用时触发.
--new--:会在--init--执行前触发
五.单例模式
---单例模式的类只提供私有的构造函数
---类定义中含有一个该类的静态私有对象.
---该类提供了一个静态的共有函数用于创造或获取它本身的静态私有对象.
我把月亮戳到天上
天就是我的
我把脚踩入地里
地就是我的
我亲吻你
你就是我的