1、靜態方法和類方法python
靜態方法閉包
須要經過修飾器@staticmethod來修飾,靜態方法不須要多定義參數,能夠經過對象和類來訪問。函數
1 class PD(object): 2 def __init__(self,a,b,c,d): 3 self.a = a 4 self.b = b 5 self.c = c 6 self.d = d 7 @staticmethod 8 def is_valid(a,b,c,d): 9 for i in [b,c,d]: 10 if i != a: 11 return False 12 else: 13 return True 14 def area(self): 15 if res ==True: 16 area_ = self.a *self.b 17 return area_ 18 pd = PD(2,2,2,2) 19 res = pd.is_valid(2,2,2,2) 20 if res == True: 21 print(pd.area())
總結:靜態方法中不須要額外定義參數,所以在靜態方法中引用類屬性的話,必須經過類實例對象來引用spa
類方法code
是類對象所擁有的方法,須要用修飾器@classmethod
來標識其爲類方法,對於類方法,第一個參數必須是類對象,通常以cls
做爲第一個參數(固然能夠用其餘名稱的變量做爲其第一個參數,可是大部分人都習慣以'cls'做爲第一個參數的名字,就最好用'cls'了),可以經過實例對象和類對象去訪問。對象
1 class A(object): 2 def __init__(self): 3 self.joker=100 4 5 @classmethod 6 def a(cls): 7 return cls() 8 9 #不須要建立A的實例,可直接用A調用a 10 joker=A.a() 11 print(joker) 12 joker2=A() 13 print(joker2
默認值blog
1 def say(message, times=1): 2 print(message * times) 3 4 say('Hello') #默認值是(hello,1) 5 say('World', 5) #更改後是(world,5)
總結:你可能爲但願使一些參數可選並使用默認的值,以免用戶不想爲他們提供值的狀況。默認參數值能夠有效幫助解決這一狀況。你能夠經過在函數定義時附加一個賦值運算符(=
)來爲字符串或參數指定默認值。繼承
時間戳ip
1 from time import time,localtime,sleep 2 print(localtime(time()))
2、類與類之間的關係內存
繼承
繼承指的是類與類之間的關係是一種建立新類的方式,新建的類能夠繼承一個或多個父類,父類又可稱爲基類或超類,新建的類稱爲派生類或子類,繼承又單繼承和多繼承。
經過繼承創建了派生類與基類之間的關係,它是一種'是'的關係,好比白馬是馬,人是動物。 當類之間有不少相同的功能,提取這些共同的功能作成基類,用繼承比較好,好比老師是人,學生是人
單繼承
例如:
1 class S(object): 2 def __init__(self): 3 self.a = 2 4 self.b = 4 5 6 def sum(self): 7 SUM_ = self.a + self.b 8 return SUM_ 9 10 11 class L(S): 12 def __init__(self): 13 S.__init__(self) 14 def p(self): 15 res = self.sum() 16 print(res) 17 18 z = L() 19 z.p()
使test1裏的類A導入到text裏
(1)from test1 import A
(2)import test1
test1.A()
爲了讓test只輸出一個結果:if _ _name_ _ = = 「_ _main_ _」
函數閉包
1 def foo(): 2 def bar(): 3 return "hello" 4 return bar 5 6 f1=foo() 7 print(f1())
列表生成式
優勢: 計算速度快,由於一次性已經所有加載到內存中了,適合數據量不是太大的狀況10000- 2000-
缺點: 佔用內存
a = [x for x in range(1000) if x % 2== 0]
生成器
優勢: 節約內存空間
缺點: 計算速度慢,由於要生成
1 a = (x for x in range(100000000000) if x % 2== 0) 2 for i in range(100): 3 print(next(a))
裝飾器
1 def Joker(func): 2 3 def warp(n1,n2,n3): 4 5 num = n1 + n2 6 7 return func(0,num,n3) 8 9 return warp 10 11 12 13 #裝飾器將前兩個數字求和,函數自己第三個參數乘上這個和 14 15 @Joker 16 17 def SUM(num1,num2,num3): 18 19 print(num1,num2,num3) 20 21 print(num2 * num3) 22 23 24 25 SUM(10,2,3)
建立虛擬環境