python类的继承机制_python 继承机制(子类化内置类型)

1. 如果想实现与某个内置类型具有类似行为的类时,最好的方法就是将这个内置类型子类化。

2. 内置类型子类化,其实就是自定义一个新类,使其继承有类似行为的内置类,通过重定义这个新类实现指定的功能。

class newDictError(ValueError):

'''如果向newDict添加重复值,则引发此异常'''

class newDict(dict):

'''不接受重复值的字典'''

def __setitem__(self, key, value):

if value in self.values():

if((key in self and self[key] != value) or (key not in self)):

raise newDictError("这个值已经存在,并对应不同的键")

super().__setitem__(key, value)

demoDict = newDict()

demoDict['key'] = 'value'

demoDict['other_key'] = 'value2'

print(demoDict)

demoDict['other_key'] = 'value'

print(demoDict)

{'key': 'value', 'other_key': 'value2'}

Traceback (most recent call last):

File "C:/Users/24724/.spyder-py3/temp.py", line 15, in

demoDict['other_key'] = 'value'

File "C:/Users/24724/.spyder-py3/temp.py", line 9, in __setitem__

raise newDictError("这个值已经存在,并对应不同的键")

newDictError: 这个值已经存在,并对应不同的键

其实很多类都是对python内置类的部分实现,它们作为子类的速度更快,代码更整洁。

对list进行子类化,实例代码如下:

class myList(list):

def __init__(self, name):

self.name = name

def dir(self, nesting = 0):

offset = " " * nesting

print("%s%s" % (offset, self.name))

for element in self:

if hasattr(element, 'dir'):

element.dir(nesting + 1)

else:

print("%s%s" % (offset, element))

demoList = myList('三打白骨精')

demoList.append('真假孙悟空')

print(demoList.dir())

三打白骨精

真假孙悟空

None

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值