python-類的繼承

#conding: utf-8
class Programer(object):       #定義了一個Programer類
    hobby = "Play Computer"                 #在類裏面直接定義一個屬性hobby

    def __init__(self, name, age, weight):   #在構造函數裏面定義了三個屬性
        self.name = name
        self._age = age
        self.__weight = weight

    @classmethod               #方法的裝飾器;調用的時候直接用類名,而不是某個對象
    def get_hobby(cls):
        return cls.hobby

    @property                  #方法的裝飾器;像訪問屬性一樣調用方法
    def get_weight(self):
        return self.__weight

    def self_introduction(self):
        print('My name is %s \nI am %s years old\n' % (self.name, self._age))


#類的繼承
class BackendProgramer(Programer):         #定義一個BackendProgramer類,繼承了Programer類
    '''
    對構造函數進行了修改,多出一個language屬性,
    使用super調用了BackendProgramer父類的構造函數,
    將language屬性進行了賦值
    '''
    def __init__(self,name, age, weight, language):                 #構造函數多出一個language屬性
        super(BackendProgramer, self).__init__(name, age, weight)   #使用super調用了BackendProgramer父類的構造函數
        self.language = language                                    #將language屬性進行了賦值

if __name__ == '__main__':
    programer = BackendProgramer('jodie', 25, 85, 'python')    #將BackendProgramer這個類進行實例化
    print(dir(programer))                      #將BackendProgramer類的屬性打印一下
    print(programer.__dict__)                  #輸出這個對象在構造函數裏所賦予的值的屬性

    # 判斷programer的種類,可以看到打印結果爲BackendProgramer類
    print(type(programer))

    #判斷一下這個對象判斷類型的時候是不是會被認爲它的父類就是Programer這個類
    #一個對象,它是從屬於它的父類的,在判斷類型的時候,它會被認爲自己所在類的父類;所以打印結果爲:True
    print(isinstance(programer, Programer))   




--------------------------------------
運行後的打印結果:
D:\Jodie2019\venv\Scripts\python.exe D:/Jodie2019/study/study6類的繼承.py
['_Programer__weight', '__class__', '__delattr__', '__dict__', 
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', 
'__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', 
'__lt__', '__module__', '__ne__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 
'__subclasshook__', '__weakref__', '_age', 'get_hobby', 'get_weight', 
'hobby', 'language', 'name', 'self_introduction']

{'name': 'jodie', '_age': 25, '_Programer__weight': 85, 'language': 'python'}

<class '__main__.BackendProgramer'>

True

Process finished with exit code 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章