Python面向对象高级编程

时间:2020-09-17 20:34:38   收藏:0   阅读:34

一、实例绑定属性和方法(动态语言特有)

先定义class:

class Student(object):
pass

给实例绑定一个属性

  >>> s = Student()
  >>> s.name = ‘Michael‘ # 动态给实例绑定一个属性
  >>> print(s.name)
  Michael

给实例绑定一个方法

  >>> def set_age(self, age): # 定义一个函数作为实例方法
  ...     self.age = age
  ...
  >>> from types import MethodType
  >>> s.set_age = MethodType(set_age, s) # 给实例绑定一个方法
  >>> s.set_age(25) # 调用实例方法
  >>> s.age # 测试结果
  25

但是,给一个实例绑定的方法,对另一个实例是不起作用的

为了给所有实例都绑定方法,可以给class绑定方法:

  >>> def set_score(self, score):
  ...     self.score = score
  ...
  >>> Student.set_score = set_score

2、slots(限制实例的属性)

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

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!