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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值