如何短时间提高python面向对象_Python学习(23):Python面向对象(1)速成

一、Python经典类与新类

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

classclassics:

'define a classics Class'

pass

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

classnewClass(object):

'define a classics Class'

pass

二、Python的实例化

创建一个实例的过程叫实例化,在其他编程语言中一般用关键字 new ,但是在Python中没有这个关键字。而是类似函数调用的方式创建实例的:

classnewClass(object):

passinst =newClass()

print inst #<__main__.newclass object at>

三、类最简单的用法

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

classnewClass(object):

passbar = newClass() #创建实例

bar.x = 1 #创建实例属性

bar.y = 2

print bar.x+bar.y

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

四、方法

方法就是类的功能

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

在类中,方法有一个默认参数self,这个参数代表实例本身,当用实例调用方法时,由解释器悄悄传递给方法。

classnewClass(object):

defmethod(self):

returnself

bar =newClass()

print bar.method() #<__main__.newclass object at>

在其他语言中,self一般称为this,一般方法会用到这个实例(self),但是静态方法和类方法不需要。

五、创建类、方法、实例对象访问

classaddPerson(object):

def __init__(self,nm,ph): #定义构造器

self.name = nm #设置name

self.phone = ph #设置phone

print 'Created instance for',self.name

defupdatePhone(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

六、子类

创建子类:靠继承来进行子类化,在不影响父类(基类)的基础上改进自己的功能。

如:继承上面的类

classaddInfo(addPerson):

def __init__(self,nm,ph,id,em): #定义自己的构造器

addPerson.__init__(self, nm, ph) #继承父类构造器(这个很重要)

self.empid =id

self.email =em

defupdateEmail(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>

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__

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值