摘要: 由于Python是动态语言,任何实例在运行期都可以动态地添加属性。使用__slots__要注意,__slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的。 如果要限制添加的属性,例如,Student类只允许添加 name、gender和score 这3个属性,就可以利用Python的一 阅读全文
posted @ 2017-06-01 16:56 WhatTTEver 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 利用两个方法获取score和修改score: 这样一来,s.set_score(1000) 就会报错。 这种使用 get/set 方法来封装对一个属性的访问在许多面向对象编程的语言中都很常见。 但是写 s.get_score() 和 s.set_score() 没有直接写 s.score 来得直接。 阅读全文
posted @ 2017-06-01 16:46 WhatTTEver 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__(): 输出: 上述 Student 类实现了__cmp__()方法,__cmp__用实例自身s 阅读全文
posted @ 2017-06-01 12:47 WhatTTEver 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): 现在,在交互式命令行下用 print 试试: 但是,如果直接敲变量 p: 似乎__str__() 不会被调用。 因为 Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而_ 阅读全文
posted @ 2017-06-01 12:20 WhatTTEver 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 通过 setattr() 绑定属性。 或者 阅读全文
posted @ 2017-06-01 11:15 WhatTTEver 阅读(5519) 评论(0) 推荐(0) 编辑