Python學習筆記05——類的創建及使用

1類的定義

1.1類的組成

屬性 具體屬性 特點
方法 構造方法 構造方法用於構造實例對象,__init__,傳入參數第一個必須是self
方法 成員方法 成員方法定義在類中,第一個參數必須是self,方法前加__
方法 私有方法 私有方法不能由外部調用,第一個參數必須是self
方法 靜態方法 靜態方法不依賴於實例對象,同時也不能調用類方法和類屬性,用@staticmethod修飾
方法 類方法 類方法不依賴實例對象,但是必須傳入參數cls,代表類本身,因此可以調用類方法和變量,用classmethod修飾
屬性 成員屬性 在構造方法中定義的屬性,可由實例對象調用
屬性 私有屬性 在構造方法中定義的屬性,只能由類對象內部調用,屬性名前加__
屬性 類屬性 在類中定義的屬性,不依賴實例對象調用

1.2類的定義格式

定義格式如下:

lass ClassName:
    clsname=“”#定義類變量

    @staticmethod#定義靜態方法,靜態方法不依託實例對象存在,但是也不能調用成員變量和成員方法
    def staticname():
        
	@classmethod#定義類方法,類方法不依託實例對象存在,同時類變量需要傳入cls參數(類本身參數),因此可以調用和修改類變量
    def classmethodname(cls):
        
    def__init__(self,arg1,arg2):#定義構造方法,需要傳入固定self參數(實例對象本身)#####__init__千萬不能寫成int
        self.arg1=arg1         #定義成員屬性
        self.__arg2=arg2       #定義私有屬性,外部不可訪問和調用,只能通過類成員方法訪問

    def set_arg2(self):              #定義成員方法,可以修改私有屬性
        
    def __method(self)               #定義私有方法,外部不可調用,只能通過成員方法調用

實例演示如下:

>>> class Dog:
...     classname="狗類"
...     @staticmethod
...     def state():
...         print("這是一個狗類")
...     @classmethod
...     def favorite(cls):
...         print(cls.classname+":狗喜歡喫骨頭")
...     def __init__(self,name,age):
...         self.name=name
...         self.__age=age
...     def set_age(self,age):
...         if not isinstance(age,int):
...             print("年齡必須是整數!")
...         elif age<=0:
...             print("年齡必須大於0!")
...         else:
...             self.__age=age
...     def show(self):
...         self.play()
...     def play(self):
...         print("汪汪汪")
...
>>> Dog.classname
'狗類'
>>> Dog.favorite()
狗類:狗喜歡喫骨頭
>>> dog.name
'旺財'
>>> dog.set_age(5)
>>> dog.show()
汪汪汪
>>> 

2類的繼承和多態

2.1類的繼承

繼承語法如下:

class SubClass(BaseClass1,BaseClass2):
語法塊

注意:
1.繼承直接在類名後面加括號、帶上父類名稱;
2.python中可以繼承多個類;
3.子類不能繼承父類的私有方法,也不能調用;

2.2類的多態

子類對父類的同名方法進行復寫。

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