一、靜態方法和類方法
1.靜態調用:@staticmethod
class A(object): @staticmethod def a(): print('a') A.a()
如果類中需要非該類成員存在,則可以使用靜態調用的方法
2.示例
輸入四條邊判斷是否它是正方形,如果是:計算面積,用@staticmethod
class zfx(object): def __init__(self,a,b,c,d): self.a=a self.b=b self.c=c self.d=d @staticmethod def is_valid(a,b,c,d): for i in [b,c,d]: if i !=a: return False else: return True def area(self): if res == True: area_ = self.a *self.b return area_ fx = zfx(5,5,5,5) res = fx.is_valid(5,5,5,5) fx.area() if res == True: print(fx.area())
3.類方法
(1)默認值:
def A(bl = 'hello'): print(bl) A()
輸出結果為:hello
(2)cocaltime
#調用localtime這個庫: from time import time,localtime,sleep print(time())
時間戳,從1970年1月1日00.00.00開始到現在經歷過的秒數
(3)@classmethod
@classmethod:獲取自身類(cls)中的屬性,並且可以更改.
classmethod 修飾符對應的函數不需要實例化,不需要 self 參數,但第一個參數需要是表示自身類的 cls 參數,可以來調用類的屬性,類的方法,實例化對象等
4.類與類之間的關系(繼承)
(1)第一步要類名中寫上繼承的類
(2)建議用類名(classname)__init__(self):a.__init__(self)
(3)示例:創建一個父類創建一個子類,父類計算兩個數字的和計算SUM_,子類打印這個SUM_
class fu(object): def __init__(self): self.a = 10 self.b = 20 def sum_(self): sum=self.a + self.b return sum class zi(fu): def __init__(self): fu.__init__(self) def PRINT(self): res = self.sum_() print(res) b= zi() b.PRINT()
輸出:30
5.列表生成式和列表生產器
#列表生成式 a = [x for x in range(100)] print(a) #列表生成器 a = (x for x in range(100)) print(a)
列表生成式與列表生成器的優缺點:
(1)生成式:
優點: 計算速度快,因為一次性已經全部加載到內存中了,適合數據量不是太大的情況10000- 2000-
缺點: 占用內存
(2)生成器:
優點: 節約內存空間
缺點: 計算速度慢,因為要生成
二、裝飾器
1.函數的閉包:函數包函數
2.裝飾器的用法:先走裝飾器再走函數
3.裝飾器示例:創建三個函數,兩個參數,裝飾器處理這兩個參數的和,每一個函數打印這兩個參數
def Joker(func): def warp(n1,n2,n3): num = n1 + n2 return func(0,num,n3) return warp *裝飾器將前兩個數字求和,函數本身第三個參數乘上這個和* @Joker def SUM(num1,num2,num3): print(num1,num2,num3) print(num2 * num3) SUM(10,2,3)