一、靜態方法和類方法
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)
