[2015-08-09] python020

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

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

构造器

类的特殊属性:

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

特殊属性

实例属性:

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

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

实力属性

Python类方法中可用的变量:

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

继承

  • 继承描述了基类的属性如何“遗传”给派生类
  • 子类可以继承它的基类的任何属性,包括数据属性和方法
  • 一个未指定基类的类,其默认有一个名为object的基类
  • Python允许多重继承

创建子类:

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

继承

Python类的继承和属性搜索:

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

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

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

继承方法专用化:

  • 继承会先在子类寻找变量名,然后才查找超类,因此,子类可以对超类的属性重新定义来取代继承而来的行为
  • 子类可以完全取代从超类继承而来的属性
  • 也可以通过已覆盖的方法回调超类来扩展超类的方法

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

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

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

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

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

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

    而super()可用于传入实例或类型对象,语法:
    super(type[,obj])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值