首页 > 其他 > 详细

第四发

时间:2015-11-04 17:23:25      阅读:296      评论:0      收藏:0      [点我收藏+]

python可以给class实例绑定属性和方法,例:

s = Student()
s.age =10#动态属性

def sayHello(self):
    print "hello"

from types import MethodType
s.sayHello = MethodType(sayHello,s,Student)#动态方法

s.sayHello()

上面是给class实例添加动态方法,如果想给class添加动态方法,需要:

Student.sayHello = MethodType(sayHello,None,Student)

如果不想动态给class动态添加属性或方法,需要用到__slots__来限制,例:

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

s = Student()
s.age = 10#报错,如果Student继承的基类中没有object的影子,__slots__不发挥作用

__slots__定义的属性只对当前类发挥作用,如果想让子类也发挥作用,需要在子类中也定义__slots__,这样子类和父类的slots都会在子类中发挥作用

第四发

原文:http://www.cnblogs.com/say-one-say/p/4936404.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!