zoukankan      html  css  js  c++  java
  • Python学习(23):Python面向对象(1)速成

    转自 http://www.cnblogs.com/BeginMan/p/3190776.html

    一、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 0x00B71650>

    三、类最简单的用法

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

    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 0x00B71910>

    在其他语言中,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 updatePhone(self,newph):
            self.phone = newph
            print 'Updated phone for',self.phone
            
    josn = addPerson('JSON','1565208444')     #创建实例对象josn
    ben = addPerson('Ben','15249638892')      #创建实例对象ben
    print 'Instance property:[%s][%s]' %(ben.name,ben.phone)    #访问实例属性
    ben.updatePhone('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 updateEmail(self,newem):
            self.email = newem
            print 'Updated e-mail address for:',self.name
            
    zhangsan = addInfo('ZhangSan','123456789','01','ZhangSan@gmail')    #创建addInfo实例,输出Created instance for ZhangSan
    print zhangsan                          #<__main__.addInfo object at 0x00B71BD0>
    print 'Instance property:[%s],[%s],[%s],[%s]' %(zhangsan.name,zhangsan.phone,zhangsan.empid,zhangsan.email)
    #输出:Instance property:[ZhangSan],[123456789],[01],[ZhangSan@gmail]
    zhangsan.updatePhone('250')             #Updated phone for 250
    zhangsan.updateEmail('Zhang@163.com')   #Updated e-mail address for: ZhangSan
    

    注意:

    如果需要,每个子类最好定义自己的构造器,不然的话,基类的构造器将会被调用。然而如果子类重写基类的构造器,那么基类的构造器就不会被自动调用,必须显式写出来才行,如上的:addPerson.__init__

  • 相关阅读:
    php无法保存cookies问题解决
    织梦(DEDECMS)首页调用相关投票的方法(自动更新)
    php导出任意mysql数据库中的表去excel文件
    学用.NET实现AutoCAD二次开发
    JS自动滚屏程序
    object c 的入门教程
    php如何截取字符串并以零补齐str_pad() 函数
    自己制作软键盘的几个关键技术解析
    php出现php_network_getaddresses的解决方法
    wamp环境下php命令运行时出现错误:无法启动此程序,因为计算机中丢失OCI.dll。尝试重新安装该程序以解决此问题
  • 原文地址:https://www.cnblogs.com/nolonely/p/6666245.html
Copyright © 2011-2022 走看看