笔记1

链接: 魔法方法

构造和析构

  • __init__(self[, ...]) #类在实例化之后会调用的方法,必须返回None。

  • __new__(cls[, ...]) #对象实例化是调用的第一个方法,除cls参数传给__init__(self[, ...]),返回实例对象,一般不重写,继承不可变类型而且需要修改的时。

    class CapStr(str):
        def __new__(cls, string):
            string = string.upper()
            return str.__new__(cls, string)
    复制代码
  • __del__(self) #所有对对象的引用都被del,启用垃圾回收机制,自动调用__del__(self)。

算数运算符

class Try_int(int):
	def __add__(self, other):
		return self + other
复制代码

#无限递归

class Try_int(int):
	def __add__(self, other):
		return int(self) + int(other)
复制代码

#修改后

  • 工厂函数(int()、float()、str()、list()等),就是一个类对象。调用他们时,事实上就是创建一个相对应的实例对象。

计时器

#不用自己写的,有很多的问题

time模块:链接
datetime模块:链接

  • 静态方法 # 在普通方法上加上@staticmethod ,优点是不会绑定到对象上,节省开销。静态方法不需要self参数。

属性访问

    class C:
	def __init__(self, size=10):
		self.size = size
	def getSize(self):
		return self.size
	def setSize(self, value):
		self.size = value
	def delSize(self):
		del self.size
	x = property(getSize, setSize, delSize)

	
     c = C()
     c.x = 2
     c.x
    2
     c.size
    2
    del c.x
    c.size
    Traceback (most recent call last):
      File "<pyshell#74>", line 1, in <module>
        c.size
    AttributeError: 'C' object has no attribute 'size'
复制代码

__getattr__(self, name) #定义当用户试图获取一个不存在的属性时的行为,
__getattribute__(self, name) #定义当该类的属性被访问时的行为
__setattr__(self, name) #定义当一个属性被设置的行为
__delattr__(self, name) #定义当一个属性被删除的行为

描述符(Property的原理)

  • 描述符就是将某种特殊类型的类的实例指派给另一个类的属性 __get__(self, instance, owner) #用于访问属性,返回属性的值
    __set__(self, instance, owner) #将在属性分配操作中调用,不返回任何内容 __delete__(self, instance, owner) #控制删除操作,不返回任何的值

定制序列

  • 协议 类似其他编程语言的接口,规定要定义什么方法。python的不那么正式,像是一种指南。
  • 容器类型的协议 #不可变,定义__len__() 和 __getitem__(), 可变,除了__len__()和__getitem__()方法,还需要定义__setitem__()和__delitem__()。

迭代器

  • __iter__()

  • __next__()

string = 'ABCDEF'
it = iter(string)
while True:
	try:
		each = next(it)
	except StopIteration:
		break
	print(each)
	
	
A
B
C
D
E
F
复制代码

#迭代,用while实现for。

#简单过了一下,还有点懵

转载于:https://juejin.im/post/5c939f685188252d9179cca7

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值