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
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-07-20 09:21  天涯海角路  阅读(105)  评论(0)    收藏  举报