python内置函数:__call__ __len__ __new__ __str__
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python内置函数:__call__ __len__ __new__ __str__,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1801字,纯文字阅读大概需要3分钟。
内容图文
![python内置函数:__call__ __len__ __new__ __str__](/upload/InfoBanner/zyjiaocheng/603/a91416abab9740e1b1a8aec671061844.jpg)
一、__call__方法:
class A: def __call__(self,*args,**kwargs): print(print('执行了call方法了')) class B: def __init__(self, cls): self.a = cls() self.a() # a = A() # a() # 相当于执行了call方法 # a2= A()() # a2 # 相当于执行了call方法 B(A) # 相当于执行了call方法,并且可以再执行call方法之前或者之后做某事
二、__len__方法
class mylist: def __init__(self): self.lst = [1,2,5] def __len__(self): print('执行了__len__了') return len(self.lst) l = mylist() print(len(l)) # len(obj)相当于这个obj的__len__方法 # __len__方法return的值就是len函数的返回值 # 如果一个obj对象没有__len__方法,那么len函数会报错 class str_len: def __init__(self, str): self.str = str def __len__(self): return len(self.str) l = str_len('12345679') print(len(l))
三、__new__方法
在开辟一个空间的时候,__init__之前执行__new__方法
class Single: def __new__(cls, *args, **kwargs): print('在new方法里面', ) return object.__new__(cls) def __init__(self): print('init') Single()
class Single: def __new__(cls, *args, **kwargs): obj = object.__new__(cls) print('在new方法里面', obj) return obj def __init__(self): print('init', self) Single()
单例类:整个类只能实例化一个对象(只开辟一个空间)
# 单例类:整个类只能实例化一个对象(只开辟一个空间) class Single: __ISIN = None def __new__(cls, *args, **kwargs): if not cls.__ISIN: cls.__ISIN = object.__new__(cls) return cls.__ISIN def __init__(self, name, age): self.name = name self.age = age s1 = Single('Alex', 20) print(s1) s2 = Single('wusir', 40) print(s2) print(s1.name) print(s2.name)
四、__str__方法
打印(print)对象的时候会运行__str__方法
class Student: def __str__(self): # 打印(print)对象的时候会运行__str__方法 return '%s %s'%(self.name, self.stu_cls) def __init__(self, name, stu_cls): self.stu_cls = stu_cls self.name = name s1 = Student('heziwei', 15) print(s1) s2 = Student('huangdongmei', 16) print(s2) print(str(s1)) # 相当于执行__str__方法
内容总结
以上是互联网集市为您收集整理的python内置函数:__call__ __len__ __new__ __str__全部内容,希望文章能够帮你解决python内置函数:__call__ __len__ __new__ __str__所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。