Python双下方法汇总
–name–
返回函数名(str类型)
当函数使用装饰器
from functools import wraps
def check(f):
@wraps(f)
def inner(*args,**kwargs):
print('zhuangshiqian')
res=f(*args,**kwargs)
return res
return inner
@check
def func():
return 'niubi'
print(func.__name__)
#func
–all–
一般放于函数开头,all=[‘xxx’,‘xxx’]
控制 from xxx import * 中的*,__all__列表里有的才被导入
–str–
类似于java的tostring方法
print(对象)出现的内容
–repr–
repr(),大威天龙我让你原形毕露
x='123'
print(x) #123
print(repr(x)) #'123'
–iter-- 和 --next–
迭代器
–dict–
返回init中的成员变量
–doc–
查看注释 ‘’‘我是注释 ‘’’
–dir–
返回函数所有的方法
import re
print(re.__dir__())
–item–
用字典的方式操作对象的属性
class A:
def __init__(self,name,id,sex):
self.name=name
self.id=id
self.sex=sex
def __getitem__(self, item):
if hasattr(self,item):
return self.__dict__[item]
def __setitem__(self, key, value):
self.__dict__[key]=value
def __delitem__(self, key):
if hasattr(self,key):
del self.__dict__[key]
–new–
创建self,相当于java的new一个对象,执行在__init__之前
用处:单实例模式,创建N个对象内存地址都是一个。所有对象属性共享,后面的赋值会覆盖前面的。
class A:
# __instance=False
def __init__(self,name,id,sex):
self.name=name
self.id=id
self.sex=sex
def __new__(cls, *args, **kwargs):
return object.__new__(A)
–hash–
控制hash()方法。
–eq–
控制比较运算符‘==’ :self和other比较,默认比较内存地址。
set()去重,看的是对象的–hash–和--eq–方法。
–len–
调用len函数时,返回指定属性长度
def __len__(self):
return len(self.id)
综合运用
from collections import namedtuple
import json
from random import choice,shuffle
Card=namedtuple('Card',['hua','num'])
class Cards:
__num=[str(i) for i in range(2,11)]+list('JKQA')
__hua=['♠','♥','♣','♦']
def __init__(self):
self.__cards=[Card(hua,num) for hua in self.__hua for num in self.__num]
# print(__cards)
def __getitem__(self, item):
return self.__cards[item]
def __setitem__(self, key, value):
self.__cards[key]=value
def __len__(self):
return len(self.__cards)
def __str__(self):
return json.dumps(self.__cards,ensure_ascii=False)
c=Cards()
print(c)
shuffle(c)
print(c)