python--类

 

 在格式上,定义一个类和定义一个函数道理是相似的,由一个关键字class 后面加上一个类名字,有两种,经典类和新式类,为了便于好记,比如类名是Myclass(object)就是新式类,Myclass就是经典类。

 其实单纯的类就是个名称空间,是对象的定义,就像是汽车的外壳,真正起作用的是’实例‘,实例才是真正能驱动汽车跑起来的玩意。

 一般语法结构是先定义一个类,然后可以什么也不做,直接第二行pass就行;也可以添加一个注释,例如文档字符串。然后可以创建类的实例,通常这个过程就是类的实例化。

 在这里要注意,例如:

class Myclass(object):

   ‘随便写的玩玩,嘻嘻’

   xijie=Myclass()  #这就是创建类的实例

 

括号内是不需要添加内容的,加了就会报错!

 为了让类的功能更完善点,在这里可以向里添加一些色彩,专业术语叫方法。基本形式是:

class Myclass(object):

   def fangfa(self):

       print ‘I like xijie‘

方法其实可以理解成类似于函数。

这里有一个特殊的方法,就是__init__(),类似于一个构造器,通常括号里传入的第一个参数是self

大概形式是这样的:

class Myclass(object): #定义类名

   def __init__(self): #定义构造器或是添加方法都可以

       self.name=nm #设置name


 self这个参数在所有的方法中都存在,它代表实例对象本身,当实例调用方法时,self没必要特意作为参数传进来,例如:

>>>hello=Myclass() #创建实例

>>>hello.__init__() #调用方法

在这里也可以这样理解:把方法中的self用实例名替换掉,例如xxx被实例化后,self.name与xxx.name一样的了,例如:

首先在vim里是这样,

class Myclass(object):

   def __init__(self,nm):

       self.name=nm

       print ‘so easy‘

然后进入python的交互模式,加入我的这个文件名是good.py,就先导入这个文件,是这样:

>>>import good

>>>xxx=good.Myclass(‘xijie‘)

还可以在交互模式下访问一些实例的属性,信息能直接反馈


如果从一个基类派生出一个子类,那么这个子类会继承这个基类的所有属性,不过这个子类还可以自己专门的属性(在于我们怎么去添加)。

大概形式是这样:

class A(object):

   pass

class B(A):

   pass

那么类B就是类A 的子类(可以理解成是他的孩子)


类属性可以通过类或是类实例来访问,例如:

class M(object):

   count=1 #静态变量

c=M()

M.count #通过类来访问下

c.count # 通过实例来访问

但如果想要更改,只能通过类,改完之后,实例也跟随这改变。但实例是不能对值更改的。例如:

M.count=M.count + 1

如果非要用实例改的话,就会又重新创建一个实例属性。如果闲它多余,可以del + 实例名。

对于类字典可以通过实例来进行修改,再用类去访问验证的确能改。例如:

class M(object):

   abc={‘xijie‘:123}

c=M()

c.abc[‘like‘]=456

这时候不管是c.abc还是M.abc   ,打印出来的结果都是一样的。


   绑定:方法只有被绑定到一个实例,才能调用。

 


   


本文出自 “天才的实力” 博客,请务必保留此出处http://8299474.blog.51cto.com/8289474/1391038

python--类,布布扣,bubuko.com

python--类

上一篇:C++ map的遍历


下一篇:C++ primer读书笔记7-复制控制