Dog類,賦予每條小狗蹲下(sit())和打滾(roll_over())的能力
dog.py源碼:
class Dog():
"""一次模擬小狗的簡單嘗試"""
def __init__(self, name, age): """注意這里一共是4個_"""
"""初始化屬性name和age"""
self.name = name
self.age = age
def sit(self):
"""模擬小狗被命令時蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模擬小狗被命令時打滾"""
print(self.name.title() + "rolled over!")
Dog類名:在python中,首字母大寫的名稱指的是類;這個類定義中的括號是空的,因為我們要從空白創建這個類。
"""一次模擬小狗的簡單嘗試""":文檔字符串,對這個類的功能作了描述。
1、方法_init_()
類中的函數都成為方法;前面學習的函數的一切都使用於方法。
_init_()是一個特殊的方法,沒當你根據Dog類創建新實例時,Python都會自動運行它。在這個方法的名稱中。開頭和末尾有兩個下划線,這是一種約定,旨在避免python默認方法與普通方法沖突。
我們將方法_init_定義成了包含三個參數:self、name和age。在這個方法的定義中,形參self必不可少,還必須位於其他形參的前面。因為Python調用這個_init_方法來創建Dog實例時,將自動傳入實參self。每個與類相關聯的方法調用都自動傳遞實參self,每個與類相關聯的方法調用都自動傳遞實參self。它是一個指向實例本身的引用,讓實例能夠訪問類中的屬性和方法。
我們創建Dog實例時,Python將調用Dog類的方法_init_()。我們將通過實參向Dog()傳遞名字和年齡;self會自動傳遞,因此我們不需要傳遞它。每當我們根據Dog類創建實例時,都只需給最后兩個形參(name和age)提供值。
self.name = name和selg.age = age 定義的變量都有前綴self。以self為前綴的變量都可供類中的所有方法使用,我們還可以通過類的任何實例來訪問這些變量。self.name = name獲取存儲在形參name中的值,並將其存儲到變量name中,然后該變量被關聯到當前創建的示例。self.age = age的作用與此類似。像這樣可以通過實例訪問的變量稱為屬性。
Dog還定義了另外兩個方法sit()和roll_over()。由於這些方法不需要額外的信息,如名字或年齡,因此他們只有一個形參self。我們后邊將創建的實例能夠訪問這些方法,換句話說,它們都會蹲下和打滾。
在同一個文件中執行如下代碼即創建了一個實例。
print("My dog's name is "+my_dog.name.title()+".")
print("My dog is " + str(my_dog.age)+" years old.\n\n")
my_dog.sit()
my_dog.roll_over()
輸出結果:
上述例子中用到了雙引號,單引號和3個雙引號。雙引號(" 字符串 ")和單引號( '字符串' )都用來表示一個字符串,無區別。三個雙引號( """注釋""" )用來表示注釋。
他們區別參考鏈接:https://blog.csdn.net/woainishifu/article/details/76105667
===================注意事項==========================
1、類中的每個屬性都必須又初始值,哪怕這個值是0或空字符串。
在某些情況下,如設置默認值時,在方法__init__內指定這種初始值是可行的;
如果你對某個屬性這樣做了,就無需包含為它提供初始值的形參。
eg: def __init__ (self, make)
self.make = make
self.model = model