【python】给类或实例绑定方法或实例

给类或者实例绑定方法或实例:

>>> class Student(object):
        pass
  1. 先定义,然后 类名.新方法=前面定义过的方法
#给类绑定方法
>>> def set_score(self, score):
...     self.score = score
...
>>> Student.set_score = set_score
#给实例绑定属性
>>> s = Student()
>>> s.name = 'Michael' # 动态给实例绑定一个属性
>>> print(s.name)
Michael
  1. MethodType()
    s.methodname = MethodType(前面定义过的方法名, s)
>>> def set_age(self, age): # 定义一个函数作为实例方法
...     self.age = age
...
>>> from types import MethodType
>>> s.set_age = MethodType(set_age, s) # 给实例s绑定一个方法,绑定名称为set_age
>>> s.set_age(25) # 调用实例方法
>>> s.age # 测试结果
25
  1. setattr(object,name,value)
    属性name必须先存在
    只能用在实例...吧

限制实例的属性,比如只允许对Student实例添加name和age属性。
__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的

class Student(object):
    __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称

在绑定属性时,检查参数
Python内置的@property装饰器就是负责把一个方法变成属性调用的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础1.r''表示''内部的字符串默认不转义2.'''...'''表示多行内容3. 布尔值:True、False(...
    neo已经被使用阅读 5,717评论 0 5
  • 20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...
    iOS_恒仔阅读 6,870评论 1 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,793评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,156评论 18 399
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 5,514评论 0 6