python中属性和方法的动态绑定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中属性和方法的动态绑定相关的知识,希望对你有一定的参考价值。
# 定义一个类
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__定义的属性仅对当前类实例起作用,对继承的子类不起作用。
以上是关于python中属性和方法的动态绑定的主要内容,如果未能解决你的问题,请参考以下文章
30.Python面向对象类方法和静态方法动态绑定属性和__slots__限制绑定@property
30.Python面向对象类方法和静态方法动态绑定属性和__slots__限制绑定@property
python中函数和方法区别,以及如何给python类动态绑定方法和属性(涉及types.MethodType()和__slots__)