Python入门笔记(24):Python面向对象(1)速成

    添加时间:2013-7-15 点击量:

    一、Python经典类与新类


    经典类:若是没有直接或间接的子类化一个对象,也就是说若是没有指定一个父类,或者是若是子类化的根蒂根基类没有父类,那么就定义了经典类:



    class classics:
    
    define a classics Class
    pass



    新式类:与经典类相反。object是“所有类之母”,也就是基类,若是你的类没有持续任何父类,object将作为默认的父类:



    class newClass(object):
    
    define a classics Class
    pass



    二、Python的实例化


    创建一个实例的过程叫实例化,在其他编程说话中一般用关键字 new ,然则在Python中没有这个关键字。而是类似函数调用的体式格式创建实例的:



    class newClass(object):
    
    pass

    inst
    = newClass()
    print inst <__main__.newClass object at 0 x00B71650>



    三、类最简单的用法


    类最简单的用法仅仅用作名称空间,意味着将数据保存到变量中,应用句点属性标识对它们按名称空间分组。



    class newClass(object):
    
    pass

    bar
    = newClass() 创建实例
    bar.x = 1 创建实例属性
    bar.y = 2
    print bar.x+bar.y


    重视:bar.x  ,bar.y  是实例对象的属性不是类的属性。



    四、办法


    办法就是类的功能


    办法在类中定义,只能被实例调用。


    在类中,办法有一个默认参数self,这个参数代表实例本身,当用实例调用办法时,由申明器静静传递给办法。



    class newClass(object):
    
    def method(self):
    return self

    bar
    = newClass()
    print bar.method() <__main__.newClass object at 0 x00B71910>


    在其他说话中,self一般称为this,一般办用到这个实例(self),然则静态办法和类办法不须要。



    五、创建类、办法、实例对象接见



    class addPerson(object):
    
    def __init__(self,nm,ph): 定义机关器
    self.name = nm 设置name
    self.phone = ph 设置phone
    print Created instance for,self.name
    def Phone(self,newph):
    self.phone
    = newph
    print Updated phone for,self.phone

    josn
    = addPerson(JSON1565208444创建实例对象josn
    ben = addPerson(Ben15249638892创建实例对象ben
    print Instance property:[%s][%s] %(ben.name,ben.phone) 接见实例属性
    ben.Phone(110
    print ben.phone



    六、子类


    创建子类:靠持续来进行子类化,在不影响父类(基类)的根蒂根基上改进本身的功能。


    如:持续上方的类



    class addInfo(addPerson):
    
    def __init__(self,nm,ph,id,em): 定义本身的机关器
    addPerson.__init__(self, nm, ph) 持续父类机关器(这个很首要)
    self.empid = id
    self.email
    = em

    def Email(self,newem):
    self.email
    = newem
    print Updated e-mail address for:,self.name

    zhangsan
    = addInfo(ZhangSan12345678901ZhangSan@gmail创建addInfo实例,输出Created instance for ZhangSan
    print zhangsan <__main__.addInfo object at 0 x00B71BD0>
    print Instance property:[%s],[%s],[%s],[%s](zhangsan.name,zhangsan.phone,zhangsan.empid,zhangsan.email)
    输出:Instance property:[ZhangSan],[123456789],[01],[ZhangSan@gmail]
    zhangsan.Phone(250Updated phone for 250
    zhangsan.Email(Zhang@163.comUpdated e-mail address for: ZhangSan


    重视:


    若是须要,每个子类好定义本身的机关器,不然的话,基类的机关器将会被调用。然而若是子类重写基类的机关器,那么基类的机关器就不会被主动调用,必须显式写出来才行,如上的:addPerson.__init__


    真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
    分享到: