您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python3的面向對象舉例分析”,在日常操作中,相信很多人在Python3的面向對象舉例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python3的面向對象舉例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
# 面向對象import abcfrom enum import Enum, unique@unique # unique確保無重復值class Weekday(Enum): """ 枚舉類 """ # 左邊為name,右邊為value Sun = 0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6class Person(metaclass=abc.ABCMeta): """ Person 為抽象類,Person的子類需要實現抽象方法 """ @abc.abstractmethod def abs_m(self): print("Person:abs_m")class Student(Person): """ Student Doc """ # 實現抽象方法 def abs_m(self): print("absMethod") # 使用父類引用 def sup(self): super().abs_m() # count為類屬性 count = 0 # 類方法 @classmethod def cm(cls): print("classMethod:", Student.count) # 靜態方法 @staticmethod def sm(): print("staticMethod:", Student.count) # 實例私有方法 def __p(self): # 如果沒有使用到self,這里可能會警告this method may be static print("私有方法", self) # 定義該類只允許有這些屬性 __slots__ = ('name', '__age', "_gender") def __init__(self, name, age, gender): # 這是實例屬性,外部可以直接訪問 self.name = name # 兩個下劃線開頭是私有屬性,在外部不能訪問(如果要強行訪問,可以使用s._Student__name,但不建議這樣做) self.__age = age # 一個下劃線開頭也表示私有屬性,在外部可以直接訪問,但不建議訪問(為什么這樣設計?) self._gender = gender pass # 雙下劃線開頭和結尾的是特殊方法或變量,不是私有的,外部可以訪問 # 因此不要把方法或屬性名定義為雙下劃線開頭和結尾 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的具體類型 print(type(s).__name__) # 內置attr函數使用 print(hasattr(s, "name")) print(getattr(s, "name")) # print(delattr(s, "name")) # print(setattr(s, "abc", 1)) # s是否是某個類型 print(isinstance(s, Student)) # Student類是否是某個類的子類 print(issubclass(Student, object)) # 調用s.__str__()方法 print(s) # 使用枚舉類 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() # 調用 foo 方法A.func2() # 不需要實例化
class C(object): @staticmethoddef f():print('runoob'); C.f(); # 靜態方法無需實例化cobj = C() cobj.f() # 也可以實例化后調用
到此,關于“Python3的面向對象舉例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。