Python 3.6 定義類中的方法和屬性

#Python3 中類的封裝,構造方法的定義,實例化屬性,和共有屬性

#把具有相同特徵的一類東西抽象成一個類

#1,類的定義   關鍵字:Class

#類和方法的命名都是駝峯命名規則,但是類的首字母大寫,方法的首字母小寫
class  Animal(object):    #這裏定義了一個Animal類,繼承了object基類
    pass


#注意,任何類都會繼承object基類,所以定義類的時候可以 object可寫可不寫

# 使用類的時候需要先實例化



an=Animal() #實例化類  現在an這個對象就得到了Animal的所有方法和屬性


#2,類中構造方法的學習

class  Animal1(object):    #這裏定義了一個Animal類,繼承了object基類
    def __init__(self):   #這是構造方法,構造方法中必須加參數self
        print('對象只要被實例化,我就會被調用,可以把我理解成初始化方法')


a=Animal1()  #實例化Animal1類,自動輸出構造方法

#實例化構造對象的時候必調用構造方法,構造方法的寫法 只能是 __init__

#如果聲名類的時候沒有定義構造方法,那就會默認調用父類的構造方法

# __init__(self) 中的self這個參數意思是實例化對象自己

'''
#實例化對象調用類中方法的時候一定會默認傳一個參數,這個默認參數就是把自己傳進去
#所以說只有在類中有(self)參數的方法,才能被實例調用,
#如果類中的方法沒有self參數,
#那麼這個方法只能被類調用,不能被類的實例化調用
'''


#屬性,實例化屬性,和類屬性
#類屬性又叫共有屬性
class Animal2(): #定義一個Animal2()類,雖然沒寫object 但是它默認繼承
    def __init__(self,name):  #定義構造方法
        self.name=name        #這個叫實例化屬性 在方法中定義的叫實例化屬性

    def getName(self):
        print(self.name)     #問 爲什麼我getName中沒有定義name屬性,我可以輸出
                             #因爲,類在實例化的時候得到了自己的name屬性,我們把self對象穿進去就有了name屬性
#類屬性

class Animal3(): #定義一個Animal3()類
    age=2          #這個age是共有屬性
    def __init__(self,name):  #定義構造方法
        self.name=name        #這個叫實例化屬性 在方法中定義的叫實例化屬性

    def getName(self):
        print(self.name)  

'''
當共用屬性被實例化調用的時候,共用屬性會變成實例化屬性,切記

'''






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