虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程。
一、如何定义一个类
在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法。
类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义:
class className:
block
注意类名后面有个冒号,在block块里面就可以定义属性和方法了。当一个类定义完之后,就产生了一个类对象。类对象支持两种操作:引用和实例化。引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象。比如定义了一个people类:
class people: # 定义了一个类
name = 'jack' # 定义了一个属性
def printName(self): # 定义了一个方法
print self.name
people类定义完成之后就产生了一个全局的类对象,可以通过类对象来访问类中的属性和方法了。当通过people.name(至于为什么可以直接这样访问属性后面再解释,这里只要理解类对象这个概念就行了)来访问时,people.name中的people称为类对象,这点和C++中的有所不同。当然还可以进行实例化操作,p=people( ),这样就产生了一个people的实例对象,此时也可以通过实例对象p来访问属性或者方法了(p.name).
理解了类、类对象和实例对象的区别之后,我们来了解一下Python中属性、方法和函数的区别。
在上面代码中注释的很清楚了,name是一个属性,printName( )是一个方法,与某个对象进行绑定的函数称作为方法。一般在类里面定义的函数与类对象或者实例对象绑定了,所以称作为方法;而在类外定义的函数一般没有同对象进行绑定,就称为函数。
二、属性
在类中我们可以定义一些属性,比如:
class people:
name = 'jack'
age = 12 p = people() # 建立一个对象
print p.name,p.age # p.name 引用对象的属性
定义了一个people类,里面定义了name和age属性,默认值分别为'jack'和12。在定义了类之后,就可以用来产生实例化对象了,这句p = people( )实例化了一个对象p,然后就可以通过p来读取属性了。这里的name和age都是公有的,可以直接在类外通过对象名访问,如果想定义成私有的,则需在前面加2个下划线 ' __'。
class people:
__name = 'jack'
__age = 12 p = people()
print p.__name,p.__age
这段程序运行会报错:
aaarticlea/png;base64,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" alt="" />
提示找不到该属性,因为私有属性是不能够在类外通过对象名来进行访问的。在Python中没有像C++中public和private这些关键字来区别公有属性和私有属性,它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。
三、方法
在类中可以根据需要定义一些方法,定义方法采用def关键字,在类中定义的方法至少会有一个参数,,一般以名为'self'的变量作为该参数(用其他名称也可以),而且需要作为第一个参数。下面看个例子:
class people:
__name = 'jack'
__age = 12 def getName(self): # 定义一个方法
return self.__name
def getAge(self):
return self.__age p = people()
print p.getName(),p.getAge()
aaarticlea/png;base64,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" alt="" />
四、类中内置的方法
在Python中有一些内置的方法,这些方法命名都有比较特殊的地方(其方法名以2个下划线开始然后以2个下划线结束)。类中最常用的就是构造方法和析构方法。
构造方法__init__(self,....)在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。构造方法支持重载,如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法。
析构方法__del__(self)在释放对象时调用,支持重载,可以在里面进行一些释放资源的操作,不需要显示调用。
还有其他的一些内置方法:
比如 __cmp__( ), __len( )__等,具体的用法可以参考这篇博文:
http://www.cnblogs.com/simayixin/archive/2011/05/04/2036295.html
五、类属性、实例属性、类方法、实例方法以及静态方法
先来谈一下类属性和实例属性,在前面的例子中我们接触到的就是类属性,顾名思义,类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,对于公有的类属性,在类外可以通过类对象和实例对象访问。
class people:
name = 'jack' # 公有的类属性
__age = 12 # 私有的类属性 p = people() print p.name # 正确
print people.name # 正确
print p.__age # 错误,不能在类外通过实例对象访问私有的类属性
print people.__age # 错误,不能在类外通过类对象访问私有的类属性
实例属性是不需要在类中显示定义的,比如:
class people:
name = 'jack' p = people()
p.age =12
print p.name # 正确
print p.age # 正确 print people.name # 正确
print people.age # 错误
在类外对类对象people进行实例化之后,产生了一个实例对象p,然后p.age = 12这句给p添加了一个实例属性age,赋值为12。这个实例属性是实例对象p所特有的,注意,类对象people并不拥有它(所以不能通过类对象来访问这个age属性)。当然还可以在实例化对象的时候给age赋值。
class people:
name = 'jack' #__init__()是内置的构造方法,在实例化对象时自动调用
def __init__(self,age):
self.age = age p = people(12)
print p.name # 正确
print p.age # 正确 print people.name # 正确
print people.age # 错误
如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。
class people:
country = 'china' print people.country
p = people()
print p.country
p.country = 'japan'
print p.country # 实例属性会屏蔽掉同名的类属性
print people.country
del p.country # 删除实例属性
print p.country
下面来看一下类方法、实例方法和静态方法的区别。
类方法:是类对象所拥有的方法,需要用修饰器"@classmethod"来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以"cls"作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以'cls'作为第一个参数的名字,就最好用'cls'了),能够通过实例对象和类对象去访问。
class people:
country = 'china' # 类方法,用classmethod来进行修饰
@classmethod
def getCountry(cls):
return cls.country p = people()
print p.getCountry() #可以用过实例对象引用
print people.getCountry() #可以通过类对象引用
类方法还有一个用途就是可以对类属性进行修改:
class people:
country='china'
@classmethod
def getCountry(cls):
return cls.country @classmethod # 类方法,用classmethod来进行修饰
def setCountry(cls,country):
cls.country=country p=people()
print p.getCountry() #可以用过实例对象引用
print people.getCountry() #可以通过类对象引用 p.setCountry('japan')
print p.getCountry()
print people.getCountry()
运行结果:
aaarticlea/png;base64,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" alt="" />
结果显示在用类方法对类属性修改之后,通过类对象和实例对象访问都发生了改变。
实例方法:在类中最常定义的成员方法,它至少有一个参数并且必须以实例对象作为其第一个参数,一般以名为'self'的变量作为第一个参数(当然可以以其他名称的变量作为第一个参数)。在类外实例方法只能通过实例对象去调用,不能通过其他方式去调用。
class people:
country = 'china' #实例方法
def getCountry(self):
return self.country p = people()
print p.getCountry() #正确,可以用过实例对象引用
print people.getCountry() #错误,不能通过类对象引用实例方法
静态方法:需要通过修饰器"@staticmethod"来进行修饰,静态方法不需要多定义参数。
class people:
country = 'china' @staticmethod
#静态方法
def getCountry():
return people.country print people.getCountry()
对于类属性和实例属性,如果在类方法中引用某个属性,该属性必定是类属性,而如果在实例方法中引用某个属性(不作更改),并且存在同名的类属性,此时若实例对象有该名称的实例属性,则实例属性会屏蔽类属性,即引用的是实例属性,若实例对象没有该名称的实例属性,则引用的是类属性;如果在实例方法更改某个属性,并且存在同名的类属性,此时若实例对象有该名称的实例属性,则修改的是实例属性,若实例对象没有该名称的实例属性,则会创建一个同名称的实例属性。想要修改类属性,如果在类外,可以通过类对象修改,如果在类里面,只有在类方法中进行修改。
从类方法和实例方法以及静态方法的定义形式就可以看出来,类方法的第一个参数是类对象cls,那么通过cls引用的必定是类对象的属性和方法;而实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高。静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用。