码迷,mamicode.com
首页 > 其他好文 > 详细

slots

时间:2016-06-17 20:55:37      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

class Student(object):
    pass
s = Student()
s.name = Michael
print(s.name)

def set_age(self, age):
    self.age = age
from types import MethodType
s.set_age = MethodType(set_age, s) #给实例绑定一个方法
s.set_age(25)
print(s.age)
#注意给一个实例绑定的方法对于另一个实例是不起作用的
s2 = Student() #创建新的实例
#为了给所有的实例都绑定方法,可以给class绑定方法
def set_score(self, score):
    self.score = score
Student.set_score = set_score
s.set_score(100)
print(s.score)
s2.set_score(99)
print(s2.score)

#如果我们想限制类的属性,比如,只允许对Student实例添加name和age属性
#__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的:
#除非在子类中也定义__slots__,这样,子类实例允许定义的属性就是自身的__slots__加上父类的__slots__。
class Student(object):
    __slots__ = (name, age)
s = Student()
s.name = Michael
s.age = 25
#s.score = 99 #因为__slots__(‘name‘, ‘age‘)限制Student实例只能添加name和age属性

 

slots

标签:

原文地址:http://www.cnblogs.com/rain-1/p/5595014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!