python中屬性和方法的動態綁定
- 2020 年 1 月 13 日
- 筆記
# 定義一個類
class Student(object): pass # 實例化一個對象 s = Student() # 給這個對象綁定一個屬性name s.name = 'John' print(s.name) John # 定義一個方法 def set_age(self, age): self.age = age # 導入模塊 from types import MethodType #給s這個對象綁定一個set_age的方法 s.set_age = MethodType(set_age, s) s.set_age = 30 s.age 25 # 給實例對象綁定的方法只對該實例有效。 # 給所有的實例綁定方法的做法是給類綁定方法 def set_score(self, score): self.score = score Student.set_score = MethodType(set_score, Student) # 給類綁定方法後,所有實例均可調用
python中的__slots__變量
__slots__變量的作用就是限制該類實例能添加的屬性:
class Student(object): __slots__ = ('name', 'age')
在創建Student實例的時候只能動態綁定name和age這兩個屬性。
__slots__定義的屬性僅對當前類實例起作用,對繼承的子類不起作用。

