您的位置:首页 > 编程语言 > Python开发

[2015-08-09] python020

2015-08-10 22:25 531 查看

[code]__varname__() :会被Python解释器自动调用
    a + b 相当于 a.__add__(b)
    l1 = [1,2,3] 相当于 l1 = list([1,2,3])

创建实例时,Python会自动调用类中的__init__方法,以隐性的为实例提供属性
    __init__方法被称为构造器
        如果类中没有定义__init__方法,实例创建之初仅是一个简单的名称空间
    __del__方法叫做析构器





类的特殊属性:

[code]可以使用类的__dict__字典属性或Python内置的dir()函数来获取类的属性
    A.__name__  :类A的名字
    A.__doc__   :类A的文档字符串
    A.__bases__ :类A的所有父类构成的元组
    A.__dict__  :类A的属性
    A.__module__:类A定义所在的模块
    A.__class__ :实例A对应的类




实例属性:

[code]实例仅拥有数据属性(严格意义上来说,方法是类属性)
    通常通过构造器"__init__"为实例提供属性
    这些数据属性独立于其它实例或类
    实例释放时,其属性也将被清除

内建函数dir()或实例的特殊属性__dict__可用于查看实例属性
    I.__class__ :实例化I的类
    I.__dict__  :I的属性




Python类方法中可用的变量:

[code]方法的可用变量
    实例变量:指定变量名称及实例自身进行引用
        self.变量名
    局部变量:方法内部创建的变量,可直接使用
    类变量(也称静态变量):通过指定变量名与类名进行引用
        类名.变量名 
    全局变量:直接使用


继承

继承描述了基类的属性如何“遗传”给派生类

子类可以继承它的基类的任何属性,包括数据属性和方法

一个未指定基类的类,其默认有一个名为object的基类

Python允许多重继承

创建子类:

[code]创建子类时,只需要在类名后跟一个或从其中派生的父类
    class SubClassName(ParentClass1[,ParentClass2,...])
        'optional class documentatioon string'
        class_suite
子类可以继承它的基类的任何属性,包括数据属性和方法




Python类的继承和属性搜索:

[code]Python中几乎所有属性的获取都可以使用“object.attribute”的格式
    不过,此表达式会在Python中启动搜索---搜索连续的树

class语句会产生一个类对象,对class的调用会创建实例,实例自动连结至创建了这些实例的一个或多个类

类连结至其超类的方式:
    将超类列在类头部的括号内,其从左至右的顺序会决定树中的次序
    由下至上,由左至右


继承方法专用化:

继承会先在子类寻找变量名,然后才查找超类,因此,子类可以对超类的属性重新定义来取代继承而来的行为

子类可以完全取代从超类继承而来的属性

也可以通过已覆盖的方法回调超类来扩展超类的方法

类、实例和其他对象的内建函数:

[code]issubclass()
    布尔函数,判断一个类是否由另一个类派生,语法:
    issubclass(sub,sup)

isinstance()
    布尔函数,判断一个对象是否是给定类的实例,语法:
    isinstance(obj1,class_obj2)

hasattr()
    布尔函数,判断一个对象是否拥有指定的属性,语法:
    hasattr(obj,'attr')

    同类的函数还有getattr(),setattr(),delattr()

super()
    在子类中找出其父类以便于调用其属性
    一般情况下仅能采用非绑定方式调用祖先类方法

    而super()可用于传入实例或类型对象,语法:
    super(type[,obj])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: