专栏首页sktjpython3 类的特殊方法

python3 类的特殊方法

init 初始化函数

repr

del

dir:返回所有的属性

dict:所有的属性

getattribute

coding: utf-8

#########################################################################

网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>

author yeeku.H.lee kongyeeku@163.com

version 1.0

Copyright (C), 2001-2018, yeeku.H.Lee

This program is protected by copyright laws.

Program Name: Date:

######################################################################### class Rectangle: def init (self, width, height): self.width = width self.height = height def setattr(self, name, value): print('----设置%s属性----' % name) if name == 'size': self.width, self.height = value else: self.dict[name] = value def getattr(self, name): print('----读取%s属性----' % name) if name == 'size': return self.width, self.height else: raise AttributeError def delattr(self, name): print('----删除%s属性----' % name) if name == 'size': self.dict['width'] = 0 self.dict['height'] = 0

rect = Rectangle(3, 4) print(rect.size) rect.size = 6, 8 print(rect.width) del rect.size print(rect.size)

自带的函数:hasattr setattr getattr

call

len getitem setitem

coding: utf-8

def check_key (key): ''' 该函数将会负责检查序列的索引,该索引必须是整数值,否则引发TypeError 且程序要求索引必须为非负整数,否则引发IndexError ''' if not isinstance(key, int): raise TypeError('索引值必须是整数') if key < 0: raise IndexError('索引值必须是非负整数') if key >= 26 ** 3: raise IndexError('索引值不能超过%d' % 26 ** 3) class StringSeq: def init(self): # 用于存储被修改的数据 self.__changed = {} # 用于存储已删除元素的索引 self.__deleted = [] def len(self): return 26 ** 3 def getitem(self, key): ''' 根据索引获取序列中元素 ''' check_key(key) # 如果在self.__changed中找到已经修改后的数据 if key in self.__changed : return self.__changed[key] # 如果key在self.__deleted中,说明该元素已被删除 if key in self.__deleted : return None # 否则根据计算规则返回序列元素 three = key // (26 * 26) two = ( key - three * 26 * 26) // 26 one = key % 26 return chr(65 + three) + chr(65 + two) + chr(65 + one) def setitem(self, key, value): ''' 根据索引修改序列中元素 ''' check_key(key) # 将修改的元素以key-value对的形式保存在__changed中 self.__changed[key] = value def delitem(self, key): ''' 根据索引删除序列中元素 ''' check_key(key) # 如果__deleted列表中没有包含被删除key,添加被删除的key if key not in self.__deleted : self.__deleted.append(key) # 如果__changed中包含被删除key,删除它 if key in self.__changed : del self.__changed[key]

创建序列

sq = StringSeq()

获取序列的长度,实际上就是返回len()方法的返回值

print(len(sq)) print(sq[26*26])

打印没修改之后的sq[1]

print(sq[1]) # 'AAB'

修改sq[1]元素

sq[1] = 'fkit'

打印修改之后的sq[1]

print(sq[1]) # 'fkit'

删除sq[1]

del sq[1] print(sq[1]) # None

再次对sq[1]赋值

sq[1] = 'crazyit' print(sq[1]) # crazyit

迭代器:iter reversed

生成器:yield 需要增加

比较 lt le eq ne gt ge

str转成字符串

+-*/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python _、__和__xx__的区别

    Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范...

    用户5760343
  • python pyqt5 QTextEdit 多行文本框

    setPlainText() toPlainText() setHtml() toHtml() clear()

    用户5760343
  • python pyqt5 捕获鼠标键盘事件

    import sys from PyQt5.QtCore import (QEvent, QTimer, Qt) from PyQt5.QtWidgets ...

    用户5760343
  • 一口气说出Redis 5种数据结构及对应使用场景,面试要加分的

    也当过面试官,面试过不少应聘者,因为是我自己招人自己用,所以我不会看应聘者造火箭的技术有多牛比,只看拧螺丝的手艺瓷不瓷实。毕竟以后是一个整体,拖了大家后腿团队都...

    程序员内点事
  • Redis初识~List命令

    用户2196435
  • LRU算法——python实现

    Design and implement a data structure for Least Recently Used (LRU) cache. It s...

    py3study
  • 用 RNN 训练语言模型生成文本

    ---- 本文结构: 什么是 Language Model? 怎么实现?怎么应用? ---- cs224d Day 8: 项目2-用 RNN 建立 Langua...

    杨熹
  • JDK集合面试20问

    HashMap内部实现原理是数组+链表,通过散列算法将key值散列到数组中,如果到相同的位置,则通过拉链法解决散列冲突。在JDK8中新增了红黑树结构,当Hash...

    用户1148394
  • 10个有关String的面试问题

    下面是面试中最容易问到的有关String的问题。

    Java后端工程师
  • Python获取B站视频弹幕 简单处理

    之前看到了网上有人做过一些up的B站弹幕数据可视化,感觉还挺有意思,于是自己就动手做着玩了一下(没有做可视化)。祝福武汉,祝福中国!

    啤酒单恋小龙虾

扫码关注云+社区

领取腾讯云代金券