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