__slots__ 的 个人小发现
Topic source#7 实验了一下
Stu.set_age=MethodType(set_age,Student)
是错误的,属性也要绑定在类上才行
Student.set_age=MethodType(set_age,Student)
针对楼主方法二 大家可以尝试一下以下代码 不会报错
from types import MethodType
class Student(object):
__slots__=('name','age','set_score')
# 用tuple表示允许绑定的属性名称
s=Student()
s.name='liyanda'
s.age=21
try:
s.score=15
except AttributeError as e:
print("AttributeError",e)
def set_score(self,score):
self.score=score
s.set_score=MethodType(set_score,s)
Student.set_score = set_score并不是给类绑定了方法,只是属于调用,而Student.set_score=MethodType(set_score,Student)才是给类绑定方法
1、Student.set_score=set_score
print(Student.set_score,set_score)
2、Student.set_score=MethodType(set_score,Student)
print(Student.set_score,set_score)
分别运行上面两段代码就能体会到区别
- 1
- 2
Solitaryhon丶
同问JX锦侠问题
Student.set_gender = set_gender
和
Student.set_gender =Method Type(set_gender, Student)
的区别