Python学习11.魔法方法

- 基本的类方法

init(self[])
构造器,当实例被创建时候调用的初始化方法

class Tiger:
    def __init__(self,a,b):
        self.a=a
        self.b=b
    def much(self):
        return self.a + self.b
t =   Tiger(3,3)
print(t.much())

6

new([])
在调用init前要先调用new
new要有一个参数cls,代表要实例化的类,后面参数在自动提供给init
只有new返回了当前init的实例,当前类的init才会进入

class Tiger:
    def __init__(self,a):
        self.a=a
    def much(self):
        return self.a *2
    def __new__(cls, *args, **kwargs):
        print('it is ok')
        print(cls)
        return object.__new__(cls)

t=Tiger(3)
print(t.much())
it is ok
<class '__main__.Tiger'>
6


``

```python
class Tiger:
    def __init__(self,a):
        self.a=a
        print('sxx')
    def much(self):
        print(self.a *2)
    def __new__(cls, *args, **kwargs):
        print('it is ok')
        print(cls)
        return object.__new__(cls)

it is ok
<class '__main__.Tiger'>
sxx

new没有返回当前cls实例,则__init__不会被调用。

- del

用于调用那些将要被系统回收的对象

- str__和__repr

str(self)
打印一个对象,使用%s格式化,或者str墙砖数据类型的时候出发__str__会触发str。
当str存在时执行str,没有时候执行reper
使用%r格式化的时候出发repr
一般来说str的返回结果可读性强,而reper返回结果更加准确

- 算术运算符

类型工厂函数:
__add(self,other)__定义加法的行为;
__sub(self,other)__定义减法的行为:mul乘法,truedi真除法,floordiv定义,mod取模算法

- 反算术运算符

当文件操作不支持相应操作时候被调用:在运算前面加一个r

class Tiger(int):
    def __radd__(self, other):
        return int.__sub__(other,self)
a=Tiger(5)
b=Tiger(5)
print(a+b)
10

-增量运算符与一元运算符

增量+i

neg(self)定义正号的行为:+x

pos(self)定义负号的行为:-x

abs(self)定义当被abs()调用时的行为

invert(self)定义按位求反的行为:~x

- 迭代器

迭代是python最强大的功能之一,是访问集合元素的一种方式
迭代器对象从集合的第一个元素开始访问,直到所有元素访问完结束
只能前进,不能后退

item='dasdasdwa'
for it in item:
    print(it)
d
a
s
d
a
s
d
w
a

迭代器有两个基本的方法:iter() 和 next()。

iter(object) 函数用来生成迭代器。

next(iterator[, default]) 返回迭代器的下一个项目。

iterator – 可迭代对象

default – 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值