|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- >>> def add(x=2): #定义一个名为add的函数
- return x + 3
- >>> class C: #定义一个名为C的类
- pass
- >>> setattr(C,"sum",add) #给类C设置一个叫sum的add方法
- >>> C.sum(4) #C可以正常调用sum方法
- 7
- >>> c = C() #将C实例化c
- >>> hasattr(c,"sum") #显示c有叫做sum的方法
- True
- >>
- >>> c.sum() #为啥c不能调用sum
- Traceback (most recent call last):
- File "<pyshell#16>", line 1, in <module>
- c.sum()
- File "<pyshell#9>", line 2, in add
- return x + 3
- TypeError: unsupported operand type(s) for +: 'C' and 'int'
- >>> setattr(c,"sum",add) #给c设置一个叫sum的add方法
- >>> c.sum(5) #c可以正常调用sum
- 8
- >>>
复制代码
求大神解释一下以上原因
- >>> def 类方法(x=2):
- return x+3
- >>> def 实例方法(实例,x=2):
- return x+5
- >>> class 类:
- pass
- >>> setattr(类, '类方法', 类方法)
- >>> 实例 = 类()
- >>> 实例.__class__.类方法()
- 5
- >>> setattr(类, '实例方法', 实例方法)
- >>> 实例.实例方法()
- 7
- >>>
复制代码
|
|