前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中深化内建类,自定义字符串类

python中深化内建类,自定义字符串类

作者头像
刘金玉编程
发布2019-08-23 12:37:52
8130
发布2019-08-23 12:37:52
举报
文章被收录于专栏:编程创造城市编程创造城市

知识回顾:

1.内建类:之间学习过list 、 dict 、 str

2.使用内建类好处:大大提高开发效率;实现内建类中一些已经有的方法。

3.使用list和dict在做自定义类的时候,需要实现__init__构造方法。


本节知识视频教程

以下开始文字讲解:

一、字典类的补充

使用双星号传入的情况的不同,以下举例:

class MyDict(dict):

def __init__(self,**args):

# print(args)

return super().__init__(**args)

md=MyDict(**{"a":"老刘","b":"老张","c":"老王"})

print(md)

二、字典中的get情况

使用get的好处就是如果键不存在字典中,也不会报错,但是不会触发___getitem__这个魔法方法。

使用名称[键]的方式进行获取的时候 ,虽然当键不存在的时候会报错,但是会触发__getitem__方法,触发这个方法的好处就是我们可以自定义这个方法,使得实现我们想要的功能。

三、列表自带的reverse与reversed函数区别

使用列表自带的reverse()方法会改变变量本身的值。

而使用python中的类方法reversed()方法的话,则不会改变原来变量的值,往往这个方法使用后需要将返回值存入一个变量中。

四、自定义字符串类

本节知识中 ,我们这里利用字符串内建类str的形式来实现。

举例实现,使用自定义分隔符来隔离传入的各个字符串,我们这里开始实现一个属于自己的自定义字符串类。

新知识:使用类中的__new__魔法方法

这个方法的作用:就是在类的__init__魔法方法执行之前,就开始执行。

即:类进行实例化对象前就执行的方法(__new__)

提问:如何去除最后多余的分隔符?

使用字符串的分片功能来实现,以下举例实现:

index=-len(sep)

if(index==0):

index=len(s)

return str.__new__(cls,s[:index])

五、总结强调

1.掌握自定义类的定义与使用

2.掌握自定义字典类的注意方式

3.掌握使用自定义字符串类的方法表述

4.理解__new__方法的执行顺序位置

源代码1:

class MyDict(dict):    def __init__(self,**args):        # print(args)        return super().__init__(**args)    def __getitem__(self, item):        print("调用了")        return super().__getitem__(item)md=MyDict(**{"a":"老刘","b":"老张","c":"老王"})print(md)#注意两种调用方法的不同点,触发情况不一样# print(md.get("b"))#print(md["b"])

源代码2:

class MyString(str):    def __new__(cls, *args, sep=" "):        # print(cls)        # print(args)        s = ""        for v in args:            s += v + sep        # print(s)        index=-len(sep)        if(index==0):            index=len(s)        return str.__new__(cls,s[:index])    def __init__(self,*args,sep=" "):        # print(args)        pass
ms=MyString("a","b","c",sep="")print(ms)

相关文章:

  1. python中继承内建类, 自定义列表与字典
  2. Python中类的接口
  3. python中利用API文档开发与学习
  4. python中类和对象
  5. python中函数递归VS循环
  6. python中函数的可变参数
  7. python中自定义序列的实现
  8. python第一个程序,定位在小学数学还是幼儿园?
  9. python输入与输出涨姿势
  10. python中整型与浮点型的数值转换
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程创造城市 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档