-
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(JSON,1565208444) #创建实例对象josn
ben = addPerson(Ben,15249638892) #创建实例对象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(ZhangSan,123456789,01,ZhangSan@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(250) #Updated phone for 250
zhangsan.Email(Zhang@163.com) #Updated e-mail address for: ZhangSan
重视:
若是须要,每个子类好定义本身的机关器,不然的话,基类的机关器将会被调用。然而若是子类重写基类的机关器,那么基类的机关器就不会被主动调用,必须显式写出来才行,如上的:addPerson.__init__
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》