標籤:blog div int 而不是 name 沒有 參數 pre 自己
物件導向關鍵詞:類,對象,執行個體,方法
物件導向三大特性:封裝,繼承,多態
class Foo: # 定義類名 def f1(self): # f1方法 print("success")obj = Foo() # 建立對象obj.f1() # 通過對象執行方法
類和對象的關係:
self參數是一個Python自動會傳值的參數,那個對象執行方法,self就是那個
class SQLhelp(): def __init__(self, a1, a2, a3): # 此方法會自動執行,那個對象執行的方法,self就是那個 print("自動執行init") self.host = a1 self.name = a2 self.pwd = a3 def find(self): passobj1 = SQLhelp(‘c1.salt.com‘, ‘djc‘, ‘100‘) # 參數分別對應a1,a2,a3print(obj1.host)
>>>
自動執行
c1.salt.com
對象中封裝對象
class c1: def __init__(self, name, obj): self.name = name self.obj = objclass c2: def __init__(self, name, age): self.name = name self.age = age def show(self): print("MDZZ")class c3: def __init__(self, a1): self.aaa = a1c2_obj = c2("djc", 19) # 要寫在c1類之前c1_obj = c1("sb", c2_obj)ret = c1_obj.obj.nameprint(ret)>>>djcc3_obj = c3(c1_obj)ret2 = c3_obj.aaa.obj.show()print(ret2)>>>MDZZ
簡單單繼承
# 繼承相當於把父類的方法複製到了子類,而不是去父類裡拿
class f1: # 父類,基類 def show(self): print("f1") def foo(self): print(self.name)class f2(f1): # 子類,衍生類別 def __init__(self, name) self.name = nameobj = f2("djc")obj.foo()>>>djc
複雜單繼承
class f1: def F1(self): self.F2() # 執行f2的F2 def F2(self): print("f1,F2")class f2(f1): def F3(self): self.F1() # 執行f1的F1 def F2(self): print("f2,F2")obj = f2()obj.F3() # 自己的方法優先,作為子類不要忽略繼承的父類的方法,如果自己沒有,才去父類裡面找>>>f2,F2
簡單多繼承
class c1: def f2(self): print("c1")class c2: def f2(self): print("c2")class c3(c2,c1): # 左邊的優先 def f3(self): passobj = c3()obj.f2()>>>c2
稍複雜多繼承
class c0: def f2(self): print("c0")class c1: def f2(self): print("c1")class c2(c0): def f1(self): print("c2")class c3(c2,c1): def f3(self): passobj = c3()obj.f2()>>>c0
複雜多繼承
class c_2: def f2(self): print("c_2")class c_1(c_2): def f2(self): print("c_1")class c0(c_2): def f1(self): print("c0")class c1(c_1): def f1(self): print("c1")class c2(c0): def f1(self): print("c2")class c3(c2,c1): def f3(self): passobj = c3()obj.f2()>>>c-1
class h5: def forever(self): self.run()class h4(h5): def __init__(self): pass def run(self): self.process() def process(self): print("h4")class h3(h4): def __init__(self): passclass h2: def process(self): print("h2")class A(h2, h3): passobj = A()obj.forever()>>>h2
Python物件導向編程基礎