types.Methodtype()

 help(types.MethodType)
Help on class method in module builtins:

class method(object)
 |  method(function, instance)
 |
 |  Create a bound instance method object.

In [53]: def test(self,age):
    ...:     self.age=age

In [54]: class  A(object):
    ...:     def __init__(self,age):
    ...:         self.age=age
    ...:     pass

In [55]: A.test=types.MethodType(test,A)

In [56]: a=A(0)

In [57]: a
Out[57]: <__main__.A at 0x189583e5d68>

In [58]: b=A(-2)

In [59]: b
Out[59]: <__main__.A at 0x189584930f0>

In [60]: b.age
Out[60]: -2

In [61]: a.age
Out[61]: 0

In [62]: A.age
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-62-204a21ecae15> in <module>
----> 1 A.age

AttributeError: type object 'A' has no attribute 'age'

In [63]: a.test(7)

In [64]: a.age
Out[64]: 0

In [65]: A.age
Out[65]: 7

In [66]: A.test(2)

In [67]: a.age
Out[67]: 0

In [68]: A.age
Out[68]: 2

类属性


In [36]: class Student():
    ...:     pass

In [37]: def set_age(self,age):
    ...:     self.age=age

In [38]: s1=Student()

In [39]: s2=Student()
n [41]: Student.set_age=types.MethodType(set_age,Student)

In [42]: s1.set_age(12)

In [43]: s1.age
Out[43]: 12

In [44]: s1.set_age(13)

In [46]: s1.age
Out[46]: 13

In [47]: Student.age
Out[47]: 13

In [48]: s2=Studet()

In [49]: s2=Student()

In [50]: s2.age
Out[50]: 13


In [12]: class  A(object):
    ...:     def __init__(self,age):
    ...:         self.age=age
    ...:     pass

In [13]: def test(self,age):
    ...:     self.age=age

In [14]: a=A(3)

In [15]: a.age
Out[15]: 3
n [18]: a.test=types.MethodType(test,a)

In [19]: a.test(10)

In [20]: a.age
Out[20]: 10

In [21]: b=A(5)

In [22]: b.age
Out[22]: 5



In [23]: A.test=types.MethodType(test,A)

In [24]: c=A(0)

In [25]: d=A(-1)

In [26]: c.test(3)

In [27]: c.age
Out[27]: 0

In [28]: d.test(6)

In [29]: d.age

Out[30]: -1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值