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__定義的屬性僅對當前類實例起作用,對繼承的子類不起作用。