Animal如何修改python3中的類?

wh7577發表於2021-09-11

之前提到的dog只是Animal的一個分支,這麼說大家就明白Animal的範圍有多大了。當然在對Animal函式內容講述之前,我們有必要整個回顧一下類是什麼,這樣才能更好加深Animal函式在其中的運用。整體回顧過後,我們會細化Animal的使用方法,小夥伴們學的時候注意區分和運用。


python中的一個類中有屬性和方法,而二者都分為很多種型別,如下所示

 屬性分為普通屬性和類屬性

方法分為普通方法、類方法、靜態方法。

具體定義方法和使用見下面的程式碼和註釋,各個屬性和方法的使用習慣等見最後的 print_animal 函式列印出的結果

下面是類的定義

class Animal:
    
    # 這裡是屬性定義
    actually = "animal" # 類屬性
    
    def __init__(self, name, age): # 定義例項時,放在括號裡的才要指定
        self.name = name # 普通屬性,要在__init__方法中定義
        self.age = age
    
    # 下面是方法的定義
    def sleep(self): # 普通方法
        print(self.name, "is sleeping")
        
    def eat(self, food): # 普通方法,另帶引數
        print(self.name, "is eating", food)
    
    @classmethod
    def sentence(cls, adv): # 類方法,使用裝飾器變成類方法
        print("I am", adv, "an", cls.actually)
    
    @staticmethod
    def other(person, do): # 靜態方法
        print(person, "is", do+"ing")
    
    @staticmethod
    def print_animal():
        print("這是之後定義子類的父類,主要講解最基本的屬性、方法以及屬性的修改")
        print("類屬性actually:屬於整個類,每個例項都有的屬性,內容相同,建立例項時不需要指定,類和例項都可以呼叫")
        print("普通屬性name age:屬於各個例項,用於儲存例項資料")
        
        print("普通方法sleep eat:由物件呼叫,至少一個引數self")
        print("類方法sentence:由類、例項呼叫,至少一個引數cls,可以引用類屬性")
        print("靜態方法other:類中的普通函式,可由類、例項呼叫")
        
        print("修改類屬性:用類呼叫修改,所有例項都更改;用例項呼叫修改不影響類和其他例項")
        print("修改普通屬性:直接賦值即可")

建立例項

# 建立例項呼叫Animal類
adams = Animal(name="Adams",age=2) # 建立例項
adams.actually # 呼叫類屬性
# 'animal'
Animal.actually # 類呼叫類屬性
# 'animal'
adams.name # 呼叫普通屬性
# 'Adams'
 
adams.sleep() # 呼叫普通方法
# Adams is sleeping
adams.eat("meat") # 有引數的普通方法
# Adams is eating meat
 
adams.sentence("really") # 例項呼叫類方法
# I am really an animal
Animal.sentence("actually") # 類呼叫類方法
# I am actually an animal
 
adams.other("Tim", "play") # 例項呼叫靜態方法
# Tim is playing
Animal.other("Mary", "watch") # 類呼叫靜態方法
# Mary is watching
 
Animal.actually = "Animal" # 修改類屬性
adams.actually
# 'Animal'
adams.actually = "animal"
Animal.actually
# 'Animal'
adams.age = 3 # 普通屬性這樣就改過來了
 
Animal.print_animal()

這樣看完本篇文章,Animal的用法還是很多的哈。有的小夥伴可能已經看得暈頭轉向,這是正常的情況,小編第一次學習的時候也有點不是全部理解,慢慢來就好啦。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2480/viewspace-2832236/,如需轉載,請註明出處,否則將追究法律責任。

相關文章