• 面向对象编程


    1. 对象:特征和技能的结合体,对于python来说,特征和技能对应属性和方法
    2. 面向对象编程:就是一堆对象再交互
    3. 类:一系列具有相同特征和技能的对象
    4. 对象的属性查找:对象本身--》类--》父类--》父类的父类--》object--》自定义的元类--》元类type
    5. 对象和类的名称空间是分开的
    6. 我们看到的数据类型list就是一个类,lis=[1,2,3,],lis就是一个实例化的对象
    7. 类的继承,继承父类的所有属性和方法
    8. 类的派生,在继承父类属性的基础上再添加新的属性
    9. 类的组合,把类或对象可以引用/当作函数的参数/当作函数的返回值/容器元素
    10. 菱形继承问题(父类最后继承一个祖宗类),对于新式类而言,广度优先,对于经典类,深度优先
    11. 多态:一种事物的多种形态,动物--》人/猫/狗,多态性:同一种调用方式,属于同一形态的东西都可以使用(了解)
    12. 类的封装:隐藏属性和方法,内部可以访问,但是外部不能访问
    13. 类的property属性:将方法转化成属性
    14. 类的绑定方,加上一个@calassmethod装饰器;对象的绑定方法,没有任何东西;非绑定方法,@staticmethod,就是一个普通的函数
    15. 反射:通过字符串获取对应的属性或方法
    16. __init__实例化自动调用,__call__是对象加()的时候使用
    17. 元类:元类()==类People,元类()()==类()==实例化对象,metaclass=Mymeta
    class Mymeta(type):
    	def __init__(self,class_name,class_bases,class_dict):
    	
    		super().__init__(class_name,class_bases,class_dict)
    		
    	def __call__(self,*args,**kwargs):  # self = People
    	
    		obj = self.__new__(self)  # 固定写法,造空对象
    		self.__init__(obj,*args,**kwargs)  # 使用People的init实例化对象
    		
    		return obj  # People('nick')
    		
    class People(metaclass=Mymeta):
    	def __init__(self,name):
    		self.name = name
    		
    p = People('nick')
    
  • 相关阅读:
    吊打XXX
    [CQOI2011]动态逆序对
    陌上花开
    【BOI2007】摩基亚Mokia
    [SCOI2008]奖励关
    最小生成树
    打表
    【中学高级本】倒酒
    整数合并
    韩信点兵
  • 原文地址:https://www.cnblogs.com/bladecheng/p/11103173.html
Copyright © 2020-2023  润新知