python中类与方法_python中的类与方法

1. 类

在Python 中,面向对象编程主要有两个主题,就是类和类实例。类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息。

首先,python中有两种风格的类:新式类和经典类。新式类和经典类声明的最大不同在于,所有新式类必须继承至少一个父类,参数bases可以是一个(单继承)或多个(多重继承)用于继承的父类。推荐尽可能使用新式类。

class MyNewObjectType(bases):

'define MyNewObjectType class'#类文档字符串

class_suite #类体

object 是“所有类之母”。如果你的类没有继承任何其他父类,object 将作为默认的父类。它位于所有类继承结构的最上层。如果你没有直接或间接的子类化一个对象,那么你就定义了一个经

典类:

class MyNewObjectType:

'define MyNewObjectType classic class'#类文档字符串

class_suite

注意有的地方在语法构成上需要有一行语句(即使是类文档字符串也可以),但实际上不需要做任何操作,这时候可以使用pass语句,如果没有pass的话,编译器会报错。示例如下:

class MyData(object):

pass

2. 方法

python的方法声明中都有一个参数self,这个参数代表实例对象本身。方法调用时,python解释器会把self默认作为第一个参数传递进来,比如有一个带两个参数的方法,那么调用时只需要传递第二个参数。

class MyDataWithMethod(object): #定义类def printFoo(self): #定义方法print 'You invoked printFoo()!'

注意Python 并不支持纯虚函数(像C++)或者抽象方法(如在JAVA 中),这些都强制程序员在子类中定义方法。作为替代方法,你可以简单地在基类方法中引发NotImplementedError 异常,这样可以获得类似的效果。

3. 绑定方法和非绑定方法

方法只有在其所属的类拥有实例时,才能被调用。当存在一个实例时,方法才被认为是绑定到那个实例了。没有实例时方法就是未绑定的。当没有实例并且需要调用一个非绑定方法的时候,则必须传递self 参数。调用非绑定方法并不经常用到。需要调用一个还没有任何实例的类中的方法的一个主要的场景是:你在派生一个子类,而且你要覆盖父类的方法,这时你需要调用那个父类中想要覆盖掉的构造方法。

View Code

class AddrBookEntry(object):

'define address book entry class'

def __init__(self, nm, ph):

self.name = nm

self.phone = ph

class EmplAddrBookEntry(AddrBookEntry):

'Employee Address Book Entry class' #员工地址记录条目def __init__(self, nm, ph, id, em): #明确传递父类构造器所需要的self参数

AddrBookEntry.__init__(self, nm, ph)

self.empid = id

self.email = em

调用父类方法,还可以用super关键字来实现。

class EmplAddrBookEntry(AddrBookEntry):

'Employee Address Book Entry class'

def __init__(self, nm, ph, id, em):

super(EmplAddrBookEntry, self).__init__(nm, ph)

self.empid = id

self.email = em

使用super()的漂亮之处在于,不需要明确提供父类。这意味着如果改变了类继承关系,只需要改一行代码(class 语句本身)而不必在大量代码中去查找所有被修改的那个类的名字。

这里,跟JAVA不同的是,覆盖__init__方法跟覆盖非特殊方法一样,子类被实例化时,基类的__init__不会被自动调用。如果不覆盖父类的__init__方法,子类被实例化时,将会被继承并自动调用。

python推荐:类名通常由大写字母开头,方法名推荐使用骆驼记法的下划线方式,比如:update_phone, update_email。

在python中写中文注释会报错,这时只要在头部加上# coding=gbk即可。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值