- 基本的类方法
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 异常。