本文主要是介绍033 Python语法之类的专有方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
类的专有方法
__init__ :构造函数,在生成对象时调用
__del__ :析构函数,释放对象时使用
__repr__ :打印,转换
__setitem__ :按照索引赋值
__getitem__:按照索引获取值
__len__:获得长度
__cmp__:比较运算
__call__:函数调用
__add__:加运算
__sub__:减运算
__mul__:乘运算
__div__:除运算
__mod__:求余运算
__pow__:乘方
__str__方法(str())
- str不重写打印的是地址
- 重写这个方法会打印你设置的返回值,必须返回字符串
__repr__方法
__iter__方法(iter())
__next__方法(it.next())
class 女神备胎:def __init__(self):self.num = 1def __iter__(self):return selfdef __next__(self):self.num += 1if self.num > 108:raise StopIteration # 用for循环不会报错,只会停止return self.numfor i in 女神备胎():print(i)
__getitem__方法(list[n[:m]])
class 集合:def __getitem__(self, item):list1 = [1, 2, 3, 4, 3, 2, 1]if isinstance(item, int):return list1[item]elif isinstance(item, slice): # 切片return list1[item]jihe = 集合()
for i in jihe:print(i)print(jihe[1:3])
__call__方法(把对象当做一个函数用)
class PaoNiu:def __init__(self,name):self.name = namedef __call__(self):print("我被调用了")paoNiu = PaoNiu("Luo")
paoNiu()
__lt__方法(对象之间进行对比,返回True False)
print(cmp(1,2))# python3被弃用了这个方法
# 覆盖了这个方法之后就可以排序了,也可以用lambda对类的某个属性进行排序
def __lt__(self, value): return self.num < value.num
hasattr(对象,方法字符串)
- 判断是否有该属性/方法
__getattr__方法(获取动态设置的属性的值,重写 对象.属性 运算)
__getattr__(self, attr):
__setattr__方法(self, attr, data)
def __setattr__(self, attr, data):if attr=="tall":raise "不能进行赋值"else:super().__setattr__(attr, data)
delattr()方法(删除属性)
def __delattr__(self,attr):if attr=="money":raise Exception("不能删除money")super().__delattr__(attr)
contains()方法(判断数据是否在)
def __contains__(self,data):return data in self.list
index()方法(返回进制)
def __index__(self,data):return data in self.list
new()方法(拦截对象创建,返回一个对象)
class B:passclass A:def __new__(self):return B()def __init__(self):
new方法
- new是用来创建实例的,object里面自动调用了,你如果需要重写,必须要返回object.new(cls)
- call来创建new,new来创建init
metaclass方法
- 定义这个类如何被创建
- metaclass = MyType
get()方法
set()方法
delete()方法
这篇关于033 Python语法之类的专有方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!