【python】類、類方法、繼承

一、類

類(Class)是用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。額…還是舉例說明吧

class human: # 定義一個類叫human
    name = "someone" # 類屬性name
    age = 20; # 類屬性age
    def say(self): # 類方法,所有的類方法都至少有一個參數self
        print("hello")
    def think(self,a=1,b=2):
        print(a+b)
        
human1 = human() # 實例化human類,得到對象human1
print(human1.name) # 訪問對象的name屬性
human1.say() # 調用對象的say()方法
human1.think(a=2,b=3) # 調用對象的think()方法,並且傳入參數

類裏有一個__init__()方法(構造方法),此方法由兩個下劃線開頭和結尾,它會在實例化類的時候自動執行,無需手動調用,所以一般可以用它完成一些初始化工作。上面的代碼可以改成下面的

class human: # 定義一個類
    def __init__(self,name="someone",age=20): # 此方法自動執行,用於初始化
        self.name = name  # 類屬性name
        self.age = age;  # 類屬性age
    def say(self): # 類方法,所有的類方法都至少有一個參數self
        print("hello")
    def think(self,a=1,b=2):
        print(a+b)

human1 = human("pan",30) # 實例化human類,得到對象human1
print(human1.name) # 訪問對象的name屬性
human1.say() # 調用對象的say()方法
human1.think(a=2,b=3) # 調用對象的think()方法,並且傳入參數

我們需要注意幾點

1.參數

類裏所有的方法都至少有一個參數self(或者this),其他的與普通方法無區別

2.專有方法

除了__init__方法,還有其他一些以雙下劃線開頭和結尾的方法,都屬於專有方法,大概有

__init__ : 構造函數,在生成對象時調用
__del__ : 析構函數,釋放對象時使用
__repr__ : 打印,轉換
__setitem__ : 按照索引賦值
__getitem__: 按照索引獲取值
__len__: 獲得長度
__cmp__: 比較運算
__call__: 函數調用
__add__: 加運算
__sub__: 減運算
__mul__: 乘運算
__truediv__: 除運算
__mod__: 求餘運算
__pow__: 乘方

3.私有屬性和私有方法

在一個類裏定義屬性或者方法的時候,若以雙下劃線開頭,聲明是私有屬性或方法,不能在類的外部被使用或直接訪問

二、繼承

可以用A類繼承於B類,這樣B類所具有的屬性和方法A類也有,比如說student類繼承於human類,則human的name、age、say()等內容student類不用自己定義就有了,而且還能重寫父類的方法

class human: # 定義一個類
    def __init__(self, name="someone", age=20):
        self.name = name  # 類屬性name
        self.age = age # 類屬性age
    def say(self): # 類方法,所有的類方法都至少有一個參數self
        print("hello")
    def think(self,a=1,b=2):
        print(a+b)

# human1 = human("pan",30) # 實例化human類,得到對象human1
# print(human1.name) # 訪問對象的name屬性
# human1.say() # 調用對象的say()方法
# human1.think(a=2,b=3) # 調用對象的think()方法,並且傳入參數

class student(human):
    def __init__(self, school="sxu", major="chem"): # 初始化類student
        super().__init__("pan", 25) # 調用父類human的初始化方法
        self.school = school
        self.major = major
    def think(self,a=1,b=2): # 重寫think()方法,父類用加法,這裏用乘法
        print(a*b)

stu = student() # 實例化類得到對象stu
print(stu.name) # stu也有父類的name屬性
print(stu.school)
print(stu.major)
stu.major = "python" # 修改major屬性
print(stu.major)
stu.think(2, 3)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章