Python动态添加属性、方法。
Python也是一门动态语言,能够在运行的时候添加属性、方法。类似于OC的Runtime,但是看上去容易多了。
class Person(object):
'''Person Class'''
def __init__(self,name,age)
self.name = name
self.age = age
#实例化对象
laowang = Person("老王","30")
#这里我们想添加一个地址的属性,但是类中只定义了name、age.我们可以直接使用instance.xx = xxxxxxx的形式来动态添加属性
laowang.addr = "隔壁"#这是instance(对象)属性
'''方法二,给类动态添加属性'''
Person.addr = "中国"
1
2
3
4
5
6
7
8
9
10
11
12
好了。动态添加属性已经搞定了,那么,动态添加方法是不是也是一样呢。
错误的动态添加方法
class Person(object):
'''Person Class'''
def __init__(self,name,age)
self.name = name
self.age = age
'''这是类里面正常定义的方法'''
def xxx(self):
pass
#类外方法
def yyy(self):
pass
#实例化对象
laowang = Person("老王","30")
'''注,这样做运行的时候报错,下一条才是正确的动态添加方法的方式'''
laowang.yyy = yyy
laowang.yyy()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
正确的动态添加方法
class Person(object):
'''Person Class'''
def __init__(self,name,age)
self.name = name
self.age = age
'''这是类里面正常定义的方法'''
def xxx(self):
pass
#类外方法
def yyy(self):
pass
#实例化对象
laowang = Person("老王","30")
'''
正确姿势,导入types模块然后使用types模块内的方法动态添加方法.
types.MethodType(methodName,instance)
'''
import types
#下面一行是动态添加对象方法
laowang.yyy = types.MethodType(yyy,laowang)
laowang.yyy()
#下面一行是动态添加类方法
Person.classyyy = types.MethodType(yyy,Person)
#这里用.classyyy是为了让大家理解下面两句调用,一个是类调用类方法,一个是对象调用类方法。
Person.classyyy()
laowang.classyyy()
---------------------
作者:MeteoriteMan
来源:CSDN
原文:https://blog.csdn.net/qq_18683985/article/details/80115169
版权声明:本文为博主原创文章,转载请附上博文链接!

浙公网安备 33010602011771号