py 5.31
Posted liujjpeipei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了py 5.31相关的知识,希望对你有一定的参考价值。
#1.try except /2.try except else /3.try except else finally /4.try finally # try: # lis = [1,2,3] # content = int(input(‘请输入数字‘)) # print(lis[content]) # # name # except IndexError: # print(‘超出范围‘) # except ValueError: # print(‘您输入的不是数字哦‘) # except Exception as e: #万能异常(可省略),但是省略以后无法看见具体报错原因。 # print(e) # else: # print(‘成功执行‘) #没有错误的时候执行else后面的代码 # finally: #无论任何时候,正确还是错误还是其它 ,都执行finally. # print(‘我是finally后面的代码‘) #else(没有错误的时候执行,可用于显示成功或结果) #finally(无论如何都执行,可用于操作文件的最后关闭文件) # def func(): # try: # print(‘777‘) # return 888 # finally: #就算前面有return也要继续执行,挡不住。 # print(‘还执行我‘) # func()
# 7.创建一个对象:触发两个方法: # 1.构造方法:__new__(cls,*args,**kwargs) # 2.初始化方法:__init__(self) #__new__方法是由object调用的类,生成的对象。object.__new__(cls) # class A: # def __init__(self,name):#再触发init方法 # self.name = name #进而进行属性赋值等操作 # def __new__(cls, *args, **kwargs):#触发new方法 # return object.__new__(cls) #得到对象的返回值 # b = A(‘alex‘)#创建一个对象 #与此方法相关的一个模式:单例模式(只存在一个对象) # class A: # _instance = None # def __init__(self,name): # self.name = name # def __new__(cls, *args, **kwargs): # if not cls._instance: # cls._instance = object.__new__(cls) # return cls._instance # else:return cls._instance # a = A(‘alex‘)#首先创建一个对象,_instance值为None # b = A(‘alex‘)#再创建一个对象,_instance值为第一个对象,直接返回,得到的还是第一个对象的值。 #8.删:[email protected]的deleter:删除伪装成属性的方法。 # 2.delattr:删除属性。 # 3.__del__:del 对象名,主动触发__del__方法。主动触发一般用来做关闭文件的动作,在__del__方法下面做关闭文件的操作, # 防止用户忘记关闭文件资源。 # 如果不主动触发,程序结束后,也会自动触发__del__方法,清除数据。缺点是无法在删除前进行作为。 #9.item系列: #*对象[参数]:触发__getitem__方法。 # class A: # def __getitem__(self, item):#对象[item] 得到一个getitem代码中返回值 # return ‘b‘ # obj = A() # print(obj[‘a‘]) #*对象[参数] = 值:触发__setitem__方法。 # class A: # def __setitem__(self, key, value): # self.__dict__[key]= value # def __getitem__(self, item): # return self.__dict__[item] # b = A() # print(b[‘a‘]) #没有值 # b[‘a‘] = ‘liujunjie‘ #赋值 # print(b[‘a‘]) #*del 对象名:触发 __delitem__: # class A: # def __setitem__(self, key, value): # self.__dict__[key]= value # # def __getitem__(self, item): # return self.__dict__[item] # def __delitem__(self, key): # return self.__dict__.pop(key) # b = A() # b[‘a‘] = ‘liujunjie‘ # print(b[‘a‘]) # del b[‘a‘] #触发 __delitem__方法,执行其中的代码,删除key # print(item.__dict__) #类的内置方法一般也用于模块的一些内置方法,如: #random模块的choice/shuffle #choice(对象):触发__len__和__getitem__方法。 # 1.触发__len__:计算对象的长度,以此来根据概率随机抽取。 # 2.触发__getitem__:使对象变成一个可迭代对象(可以用[]取值的对象) #shuffle(对象):打乱顺序。触发__len__和__getitem__方法、以及__setitem__方法。 #纸牌 # class Paper: # ranks = [str(i) for i in range(2,11)] + list(‘JQKA‘) # suits = [‘红心‘,‘方片‘,‘黑桃‘,‘草花‘] # def __init__(self): # self._cards = [(rank,suit) for rank in Paper.ranks for suit in Paper.suits] # def __len__(self): # return len(self._cards) # def __setitem__(self, key, value): # self._cards[key] = value #shuffle触发此方法。 # def __getitem__(self, item): # return self._cards[item] # a = Paper() # print(a[5]) #返回纸牌列表的第五个索引的元素(‘3‘, ‘方片‘) # import random # print(random.choice(a)) #getitem将a变成了可迭代对象,可以用choice随机抽取其中的元素 # random.shuffle(a) #打乱顺序 # print(a._cards)
以上是关于py 5.31的主要内容,如果未能解决你的问题,请参考以下文章