python核心编程八——面向对象编程

1.创建一个类(类定义)
class AddrBookEntry(object): # 类定义
       'address book entry class'
       def __init__(self, nm, ph): # 定义构造器
              self.name = nm # 设置 name
             self.phone = ph # 设置 phone
             print 'Created instance for:', self.name
      def updatePhone(self, newph): # 定义方法
           self.phone = newph
           print 'Updated phone# for:', self.name


对任何类C,表13.1 显示了类C的所有特殊属性:

C.__name__ 类C的名字(字符串)
C.__doc__ 类C的文档字符串
C.__bases__ 类C的所有父类构成的元组
C.__dict__ 类C的属性
C.__module__ 类C定义所在的模块(1.5 版本新增)

C.__class__ 实例C对应的类(仅新式类中)


2.__init__()  __new__()  __del__()

(1) 当类被调用,实例化的第一步是创建实例对象。一旦对象创建了,Python 检查是否实现了__init__()方法。默认情况下,如果没有定义(或覆盖)特殊方法__init__(),对实例不会施加任何特别的操作.任何所需的特定操作,都需要程序员实现__init__(),覆盖它的默认行为。如果__init__()没有实现,则返回它的对象,实例化过程完毕。

(2) 为何我们认为__new__()比__init__()更像构造器呢?这是因为__new__()必须返回一个合法的实例,这样解释器在调用__init__()时,就可以把这个实例作为self 传给它。调用父类的__new__()来创建对象,正像其它语言中使用new 关键字一样。


3.对象的内建函数

issubclass() 布尔函数判断一个类是另一个类的子类或子孙类。它有如下语法:issubclass(sub, sup)

Isinstance() 布尔函数在判定一个对象是否是另一个给定类的实例时,非常有用。它有如下语法:isinstance(obj1, obj2)

hasattr(), getattr(),setattr(), delattr()


4.this ,super,vars()

vars()内建函数与dir()相似,只是给定的对象参数都必须有一个__dict__属性。vars()返回一个字典,它包含了对象存储于其__dict__中的属性(键)及值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值