python类相关
class A:def bar(self):print("BAR")self.f1()
class B(A):def f1(self):print("B")
class C:def f1(self):print("C")
class D(C,B):pass
obj = D()
obj.bar()
# 創(chuàng)建了類A、B、C、D;
# D繼承了C和B,B繼承了A,D內(nèi)什么都不做,pass;
# 創(chuàng)建一個(gè)對(duì)象obj,類是D,當(dāng)執(zhí)行D的bar方法的時(shí)候會(huì)先從C里面尋找有沒有bar方法;
# C內(nèi)沒有bar方法,然后繼續(xù)從B里面查找,B里面也沒有,B的父類是A,A里面有bar方法,所以就執(zhí)行了A的bar方法;
# A的bar方法首先輸出了BAR;
# 然后又執(zhí)行了self.f1(),self=obj,相當(dāng)于執(zhí)行了obj.f1();
# 執(zhí)行obj.f1()的時(shí)候先從C里面查找有沒有f1這個(gè)方法,C里面又f1這個(gè)方法;
# 最后就執(zhí)行C里面的f1方法了,輸出了C class Foo:#靜態(tài)方法括號(hào)中沒有self,其方法前一行要加上@staticmethod@staticmethoddef static():print("static")
#靜態(tài)方法通過(guò)類名+方法名即可執(zhí)行
Foo.static()
#靜態(tài)方法也可以通過(guò)對(duì)象去訪問(wèn),對(duì)于靜態(tài)方法用類去訪問(wèn)
obj = Foo()
obj.static()
class Province:#靜態(tài)字段contry = "China"def __init__(self,name):self.name = namedef show(self):print(Province.contry,self.name) hebei = Province("河北") hebei.show() hubei = Province("湖北") hubei.show() # 類里面的成員類去訪問(wèn),對(duì)象內(nèi)的成員用對(duì)象去訪問(wèn)。
?
class Foo:def __init__(self):self.__Name = "huihuang" # 通過(guò)特殊的方法訪問(wèn) obj = Foo() #一個(gè)下劃線,一個(gè)類名,私有的變量名 print(obj._Foo__Name)?
轉(zhuǎn)載于:https://blog.ansheng.me/2016/06/python-full-stack-way-object-oriented-advanced.html
轉(zhuǎn)載于:https://www.cnblogs.com/uglyliu/p/6104250.html
總結(jié)
- 上一篇: eclipse java环境配置_Ecl
- 下一篇: TCP为何采用三次握手来建立连接,若采用