=話不多說,上原始碼=
class inttuple(tuple):
#重寫父類方法
def __new__(cls, iterable):
# for i in iterable:
# if isinstance(i,int) and i>0:
#用列表推導式
f=[i for i in iterable if isinstance(i,int) and i>0]
return super().__new__(cls,f) #報錯
i=inttuple([2, -2, "jr", ["x", "y"], 4])
print(i)
print([i for i in range(10) if i % 2 == 0])
我們知道,建立乙個物件,就要給它分配記憶體,為什麼可以節省記憶體呢,是用了__slot__魔法方法,下面看列子
#用之前
pla_1 = [player(1,2,3) for _ in range(10000)] # size=1414 kib __dict__非常消耗記憶體,以空間換取時間
#用之後
pla_2 = [player2(1, 2, 3) for _ in range(10000)]#size=395 kib
# try:
# print("123")
# raise keyerror
# except keyerror as e:
# print("keyerror")
# finally:
print("不論有無異常 都執行")
"""
可以用上下文管理器
"""class demo:
def __enter__(self):
print("start")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
"""引數只有當異常時,才返回值
:param exc_type:異常類
:param exc_val:異常值
:param exc_tb:異常的跟蹤資訊
:return:
"""print("end")
def test(self):
print("i am test")
with demo() as d:
#呼叫__enter__
d.test()
#列印完所用內容呼叫__exit__方法,釋放記憶體
或者,用@contextlib.contextmanager,一步到位,上下文管理器
# #方法一
# #訪問
# def get_age(self):
# return self.age
# #設定
# def set_age(self,age):
# if not isinstance(age,int):
# raise typeerror
# self.age=age
# age_pro=property(fget=get_age,fset=set_age)
#方法二
@property
def age_test(self):
return self.age
@age_test.setter
def age_test(self, age):
if not isinstance(age,int):
raise typeerror
self.age=age
"""
列子:⚪這個類 矩形面積與⚪的面積作比較
"""import math
@total_ordering
class circle:
def __init__(self,r):
self.r=r
def area(self):
return self.r**2*math.pi
def __gt__(self, other):
return self.area()>other.area()
def __ge__(self, other):
return self.area() >= other.area()
c=circle(2)
# print(c.area())
r=rect(2,2)
前端高階第二天
html文件 document 文件的意思 建立乙個html檔案,裡面寫的所有 就會形成乙個html文件。html文件是純文字?答 是 html文件也是純文字,也可以使用記事本開啟,記事本不能解析,只有瀏覽器和能解析html文件。不同的檔案,有不同的字尾 字尾 html 之前也可以是.htm 歷史問...
Python學習第二天
1 python包含6種內建的序列,列表 元組 字串 unicode字串 buffer物件和xrange物件 2 列表和元組的主要區別在於,列表可以修改,元組則不能。在一般情況下,幾乎所有的情況下列表都可以替代元組 3 字串就是乙個由字元組成的序列,可以通過索引獲取序列中的元素,使用負數索引時,py...
python第二天 函式
函式 python內建了很多的函式 要呼叫乙個函式,需要知道函式的名稱和引數,比如求絕對值的函式abs,只有乙個引數 常用函式 abs 求絕對值 abs 1 乙個int 的引數 max 求最大值 多個 int 轉整數 float 轉浮點數 也可以通過變數 a int 把函式體賦給a 函式的定義 使用...