這篇文章主要介紹“Python3的面向?qū)ο笈e例分析”,在日常操作中,相信很多人在Python3的面向?qū)ο笈e例分析問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”P(pán)ython3的面向?qū)ο笈e例分析”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
鄰水ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
# 面向?qū)ο骾mport abcfrom enum import Enum, unique@unique # unique確保無(wú)重復(fù)值class Weekday(Enum): """ 枚舉類(lèi) """ # 左邊為name,右邊為value Sun = 0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6class Person(metaclass=abc.ABCMeta): """ Person 為抽象類(lèi),Person的子類(lèi)需要實(shí)現(xiàn)抽象方法 """ @abc.abstractmethod def abs_m(self): print("Person:abs_m")class Student(Person): """ Student Doc """ # 實(shí)現(xiàn)抽象方法 def abs_m(self): print("absMethod") # 使用父類(lèi)引用 def sup(self): super().abs_m() # count為類(lèi)屬性 count = 0 # 類(lèi)方法 @classmethod def cm(cls): print("classMethod:", Student.count) # 靜態(tài)方法 @staticmethod def sm(): print("staticMethod:", Student.count) # 實(shí)例私有方法 def __p(self): # 如果沒(méi)有使用到self,這里可能會(huì)警告this method may be static print("私有方法", self) # 定義該類(lèi)只允許有這些屬性 __slots__ = ('name', '__age', "_gender") def __init__(self, name, age, gender): # 這是實(shí)例屬性,外部可以直接訪(fǎng)問(wèn) self.name = name # 兩個(gè)下劃線(xiàn)開(kāi)頭是私有屬性,在外部不能訪(fǎng)問(wèn)(如果要強(qiáng)行訪(fǎng)問(wèn),可以使用s._Student__name,但不建議這樣做) self.__age = age # 一個(gè)下劃線(xiàn)開(kāi)頭也表示私有屬性,在外部可以直接訪(fǎng)問(wèn),但不建議訪(fǎng)問(wèn)(為什么這樣設(shè)計(jì)?) self._gender = gender pass # 雙下劃線(xiàn)開(kāi)頭和結(jié)尾的是特殊方法或變量,不是私有的,外部可以訪(fǎng)問(wèn) # 因此不要把方法或?qū)傩悦x為雙下劃線(xiàn)開(kāi)頭和結(jié)尾 def __str__(self): return f"{self.name}, {self.__age}, {self._gender}"if __name__ == '__main__': print(Student("jack", 12, "male").cm()) print(Student("jack", 12, "male").sm()) s = Student("jack", 12, "male") # s的具體類(lèi)型 print(type(s).__name__) # 內(nèi)置attr函數(shù)使用 print(hasattr(s, "name")) print(getattr(s, "name")) # print(delattr(s, "name")) # print(setattr(s, "abc", 1)) # s是否是某個(gè)類(lèi)型 print(isinstance(s, Student)) # Student類(lèi)是否是某個(gè)類(lèi)的子類(lèi) print(issubclass(Student, object)) # 調(diào)用s.__str__()方法 print(s) # 使用枚舉類(lèi) day = Weekday.Monprint(day.name) print(day.value)
class A(object): bar = 1def func1(self):print('foo') @classmethoddef func2(cls):print('func2')print(cls.bar) cls().func1() # 調(diào)用 foo 方法A.func2() # 不需要實(shí)例化
class C(object): @staticmethoddef f():print('runoob'); C.f(); # 靜態(tài)方法無(wú)需實(shí)例化cobj = C() cobj.f() # 也可以實(shí)例化后調(diào)用
到此,關(guān)于“Python3的面向?qū)ο笈e例分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!