python中属性和方法的动态绑定

发布时间:2019-08-26 07:19:43编辑:auto阅读(1706)

    # 定义一个类
    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__定义的属性仅对当前类实例起作用,对继承的子类不起作用。











关键字