python基础-类内置函数、类内置方法
来源:互联网 发布:淘宝隐形眼镜可靠吗 编辑:程序博客网 时间:2024/05/29 18:34
- 内置函数
- 内置方法
- _str_和_repr_
- _del_
- item系列
- _call_
- _len_
- _hash_
- _eq_
内置函数
print("----是否是实例-------")from collections import Iterableprint(isinstance([],Iterable))class A:passclass B(A):passb = B()print(isinstance(b,A))print(isinstance(b,object))print("----是否是子类-------")class A:passclass B(A):passprint(issubclass(B,A))print(issubclass(A,B))print(issubclass(A,object))print(issubclass(B,object))print("----vars-------")#看全局a = 1b = 2print(vars())#k_vprint(dir())#kprint("----vars类对象-------")class A: c = 1 d = 2 def func(self,name): self.name = nameprint(vars(A))a = A()a.func("safly")#看对象print(vars(a))
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo/3.内置函数.py----是否是实例-------TrueTrueTrue----是否是子类-------TrueFalseTrueTrue----vars-------{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x007CB3F0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'E:/python/py_pro/demo/3.内置函数.py', '__cached__': None, 'Iterable': <class 'collections.abc.Iterable'>, 'A': <class '__main__.A'>, 'B': <class '__main__.B'>, 'b': 2, 'a': 1}['A', 'B', 'Iterable', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b']----vars类对象-------{'__module__': '__main__', 'c': 1, 'd': 2, 'func': <function A.func at 0x02AB1810>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}{'name': 'safly'}Process finished with exit code 0
内置方法
_str_和_repr_
改变对象的字符串显示str,repr
自定制格式化字符串format
format_dict={ 'nat':'{obj.name}-{obj.addr}-{obj.type}',#学校名-学校地址-学校类型 'tna':'{obj.type}:{obj.name}:{obj.addr}',#学校类型:学校名:学校地址 'tan':'{obj.type}/{obj.addr}/{obj.name}',#学校类型/学校地址/学校名}class School: def __init__(self,name,addr,type): self.name=name self.addr=addr self.type=type def __repr__(self): return 'School(%s,%s)' %(self.name,self.addr) def __str__(self): return '(%s,%s)' %(self.name,self.addr) def __format__(self, format_spec): if (not format_spec) or (format_spec not in format_dict): print("-------format_spec---",format_spec) format_spec='nat' fmt=format_dict[format_spec] return fmt.format(obj=self)s1=School('oldboy1','北京','私立')print('from repr: ',repr(s1))print('from str: ',str(s1))print(s1)print("--------------------------")'''str函数或者print函数--->obj.__str__()repr或者交互式解释器--->obj.__repr__()如果__str__没有被定义,那么就会使用__repr__来代替输出注意:这俩方法的返回值必须是字符串,否则抛出异常'''print(format(s1,'nat'))print(format(s1,'tna'))print(format(s1,'tan'))print(format(s1,'asfdasdffd'))print(format(s1))
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.pyfrom repr: School(oldboy1,北京)from str: (oldboy1,北京)(oldboy1,北京)--------------------------oldboy1-北京-私立私立:oldboy1:北京私立/北京/oldboy1-------format_spec--- asfdasdffdoldboy1-北京-私立-------format_spec--- oldboy1-北京-私立Process finished with exit code 0
class B: def __str__(self): return 'str : class B' def __repr__(self): return 'repr : class B'b = B()print('%s' % b)print('%r' % b)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.pystr : class Brepr : class B
_del_
析构方法,当对象在内存中被释放时,自动触发执行。
class A: def __del__(self): print('执行我啦!') self.b.close()f = open('file','w')a = A()a.b = fdel a
输出如下:
执行我啦!
析构方法
这个方法只有在执行del A类的对象的时候才被触发
且先执行代码中的内容,再删除对象
如果我删除了这个对象,它跟着还有一些其他的附属的内容也没有用了
我们就可以在这个方法中回收掉
item系列
class Foo: def __init__(self,name): self.name=name def __getitem__(self, item): print(self.__dict__[item]) def __setitem__(self, key, value): print(key,value) self.__dict__[key] = value def __delitem__(self, key): print('__delitem__ obj[key]时,我执行') self.__dict__.pop(key) def __delattr__(self, item): print('__delattr__ obj.key时,我执行') self.__dict__.pop(item)f1=Foo('sb')print("--setitem----执行------")f1['age']=18print("--getitem----执行------")f1['age']print("--delitem----执行------")del f1['age']# f1['age']f1['name']='alex'print(f1.__dict__)print("--delattr----执行------")del f1.name
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py--setitem----执行------age 18--getitem----执行------18--delitem----执行------__delitem__ obj[key]时,我执行name alex{'name': 'alex'}--delattr----执行------__delattr__ obj.key时,我执行Process finished with exit code 0
_call_
对象后面加括号,触发执行。
注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 call 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()
class Foo: def __init__(self): pass def __call__(self, *args, **kwargs): print('__call__')obj = Foo() # 执行 __init__obj() # 执行 __call__
输出如下:
__call__
_len_
class A: def __init__(self): self.a = 1 self.b = 2 def __len__(self): return len(self.__dict__)a = A()print(a.__dict__)print(len(a))
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py{'a': 1, 'b': 2}2Process finished with exit code 0
_hash_
class A: def __init__(self): self.a = 1 self.b = 2 def __hash__(self): return hash(str(self.a)+str(self.b))a = A()print(hash(a))
输出如下:
1784390486
_eq_
class A: def __init__(self): self.a = 1 self.b = 2 def __eq__(self,obj): if self.a == obj.a and self.b == obj.b: return Truea = A()b = A()print(a == b)
输出如下:
True
阅读全文
0 0
- python基础-类内置函数、类内置方法
- 【python】类内置函数
- python内置函数|类中的内置方法|字符串内置方法大全
- Python基础内置函数
- python基础-----内置函数
- Python 类内置魔法方法
- python-类的内置方法
- Python-基础-内置函数小结
- python基础-内置函数1
- python基础-内置函数2
- [python] 类常用的内置方法和函数
- python 查看内置函数方法
- python基础31[python内置函数列表]
- python 中的内置函数 与 类
- python 类的继承,内置函数(1)
- Python内置函数_数学运算类
- Python内置函数_集合操作类
- Python内置函数_逻辑判断类
- Spring 解析xml代码提取
- 汉诺塔
- 第一章 离散时间信号与系统
- Head First Python 第一章 看书心得
- 3.1
- python基础-类内置函数、类内置方法
- Docker技术入门与实战+第2版.pdf 免费下载
- ESP8266 ESP01 Arduino IDE 烧录配置
- 3、命令帮助
- Defense Lines UVA
- 基于机器学习的移动应用推荐系统的研究与实现
- Android之 MTP框架和流程分析
- ICMP协议
- 1045. Favorite Color Stripe (30) LIS