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

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

知识回顾:



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)
相关文章
|
10天前
|
Python
python获取字符串()里面的字符
在Python中,如果你想获取字符串中括号(比如圆括号`()`、方括号`[]`或花括号`{}`)内的字符,你可以使用正则表达式(通过`re`模块)或者手动编写代码来遍历字符串并检查字符。 这里,我将给出使用正则表达式的一个例子,因为它提供了一种灵活且强大的方式来匹配复杂的字符串模式。 ### 使用正则表达式 正则表达式允许你指定一个模式,Python的`re`模块可以搜索字符串以查找匹配该模式的所有实例。 #### 示例:获取圆括号`()`内的内容 ```python import re def get_content_in_parentheses(s): # 使用正则表达
64 36
|
7天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
4天前
|
前端开发 Python
Python编程的面向对象(二)—类的多态
Python编程的面向对象(二)—类的多态
12 7
|
3天前
|
IDE Java 开发工具
Python类与面向对象
Python类与面向对象
|
5天前
|
Linux UED iOS开发
Python中的自定义进度条:从零开始
Python中的自定义进度条:从零开始
|
8天前
|
Python
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
这篇文章介绍了如何使用Python的第三方库chardet来检测字符串的编码类型,包括ASCII、GBK、UTF-8和日文编码的检测示例。
34 6
|
6天前
|
网络协议 网络安全 开发者
Python 向IP地址发送字符串
Python 向IP地址发送字符串
23 2
|
7天前
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
6天前
|
Python
Python 中取字符串中等于号后面的内容
Python 中取字符串中等于号后面的内容在编程过程中,我们经常需要从字符串中提取特定的信息。一个常见的任务是在给定的字符串中查找等于号(=)后面的内容。这种需求在解析配置文件、处理查询字符串或分析日志数据时尤其常见。 如何实现 在Python中,我们可以使用多种方法来实现此功能。以下是几种常用的方法,包括字符串操作和正则表达式。 方法 1:使用字符串分割 我们可以使用字符串的 split() 方法将字符串拆分为两个部分,然后提取等于号后的值。 示例代码 ----------------------------------- ©著作权归作者所有:来自51CTO博客作者bruce_xiao
18 1
|
8天前
|
Python
python 类中的内置方法
python 类中的内置方法
下一篇
无影云桌面