一:未使用slots方法(都是在class定義完之後在class外部添加的): (1)動態綁定屬性 class Student(object): pass ...
一:未使用slots方法(都是在class定義完之後在class外部添加的):
(1)動態綁定屬性
1 class Student(object): 2 3 pass 4 5 6 7 >>> s = Student() 8 >>> s.name = 'Michael' # 動態給實例綁定一個屬性 9 >>> print(s.name) 10 Michael
(2)動態綁定方法
1 >>> def set_age(self, age): # 定義一個函數作為實例方法 2 ... self.age = age 3 ... 4 >>> from types import MethodType 5 >>> s.set_age = MethodType(set_age, s) # 給實例綁定一個方法 6 >>> s.set_age(25) # 調用實例方法 7 >>> s.age # 測試結果 8 25
註意:給一個實例綁定的方法對另一個實例不起作用。
(3)給所有實例綁定方法 (給class綁定方法)
1 def set_score(self, score): 2 ... self.score = score 3 ... 4 >>> Student.set_score = set_score
二:用__slots__來限制實例的屬性
比如:限制屬性只為‘name’和‘age’
1 class Student(object): 2 __slots__ = ('name', 'age') # 用tuple定義允許綁定的屬性名稱
使用__slots__
要註意,__slots__
定義的屬性僅對當前類實例起作用,對繼承的子類是不起作用的