python27 笔记:对象

对象的3个属性:句柄, 属性, 方法
可以随时给对象加属性

类的的属性:公有属性与私有属性
    公有属性
    私有属性, 以双下划线"__"开头
    内置属性, 前后加双下划线, 系统自动生成的
    python的对象属性在__init__()中定义
    java中类属性用static修饰, 对象属性没有

类的方法: 公有方法与私有方法
    私有方法, 以双下划线开头
    类的方法, classmethod()生成, 或@classmethod装饰器标注生成, 类的方法是动态方法, 参数加self
    静态方法, staticmethod()生成, 或@staticmethod装饰器标注生成, 参数不要加self
    动态方法与静态方法的区别是加载到内存的方式, 动态方法节约内存但更慢

内部类, 但不建议使用内部类
    可以先实例化外部类, 再用外部类实例化内部类
    或, 直接 "外部类.内部类" 实例化内部类

魔术方法, 内置方法, 有很多
    如__str__方法, 当你调用对象的时候, 自动启用它

构造函数
    __init__(self,...), 自动执行
    但__new__(self,...)比__init__(self,...)先执行, 实例化对象后__init__(self,...)才执行

析构函数
    __del__(), 自动执行

继承, python是多继承的
    类之间的关系有继承, 组合, 依赖等
    class MyClass(SuperClass)
    若父类定义了__init__()方法, 则子类得显示调用父类的方法SuperClass.__init__(self,...)
    子类先继承谁, 就先使用谁的属性
    Python 2.2 以后不建议这种非绑定的方法,推荐使用绑定的方法 super(ClassName, self).__init__()

    混用可能导致类体系出错,参考:hi.baidu.com/kxw102/item/61616d009bf83a17cd34ea35
    类中有个mro方法,显示继承结构的方法的调用顺序,classical继承是尝试优先,new-style(即定义是有object)       是广度优先,参考http://kasicass.blog.163.com/blog/static/39561920069103153611/

    

你可能感兴趣的:(python27 笔记:对象)