python的類(class)和實例(instance) 假設一種鞋子(shoe)有尺碼(size)和顏色(color)兩種屬性,以此為例。 類可以起到模板的作用,因此,可以在創建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去。通過定義一個特殊的__init__方法,在創建實例的時候,就把si ...
python的類(class)和實例(instance)
假設一種鞋子(shoe)有尺碼(size)和顏色(color)兩種屬性,以此為例。
類可以起到模板的作用,因此,可以在創建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去。通過定義一個特殊的__init__
方法,在創建實例的時候,就把size,color屬性綁到shoe上去,例如:
1 class Shoe(object): 2 3 def __int__(self, size, color): 4 self.size = size 5 self.color = color
其中,(object)表示繼承自哪個類,如果沒有合適的繼承類,就用object;
self表示實例本身,所以使用__int__方法添加屬性,可以把屬性添加到self;
數據的封裝
從類的內部定義訪問數據的函數,這樣就可以把數據封裝起來。例如:
1 class Shoe(object): 2 3 def __init__(self, size, color): 4 self.size = size 5 self.color = color 6 7 def get_color(self): 8 print('%s: %s' % (self.size, self.color))
要定義一個方法,除了第一個參數是self
外,其他和普通函數一樣。
要調用一個方法,只需要在實例變數上直接調用,除了self
不用傳遞,其他參數正常傳入:
>>> bart.get_color()
32: black
封裝的另一個好處是可以給Student
類增加新的方法,比如get_grade
:
1 class Shoe(object): 2 ... 3 4 def get_level(self): 5 if self.size >= 40: 6 return 'A' 7 elif self.size >= 32: 8 return 'B' 9 else: 10 return 'C'
可以簡單的調用get_level,例如:
>>>46.get_level() 'A'