码迷,mamicode.com
首页 > 其他好文 > 详细

如果使用实例化对象,来为类动态的添加一个 字符串形式的 方法。

时间:2019-06-01 09:47:33      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:网页   eth   stat   %s   span   应该   一个   实例化   cme   

import types

class MyClass:
    @staticmethod
    def extends(self_name, method_name, method_str, ):
        ‘‘‘
        使用实例化对象 动态的为 类添加一个 字符串形式的 方法。
        :param self_name: 调用该方法的对象 的名字
        :param method_name:  要添加的方法的名字
        :param method_str: 这个方法的 具体代码
        ‘‘‘
        method_str = method_str + \n%s.%s=types.MethodType(%s, %s) % (self_name, method_name, method_name, self_name)
        exec(method_str)


a = MyClass()

method_str = ‘‘‘
def say(self, name):
    print(‘My name is‘, name)
‘‘‘
a.extends(a, say, method_str)

a.say(alex)  # My name is alex

其实就是这样的:

import types

class MyClass:
  @staticmethod
  def extends(self_name, method_name, method_str):
    pass

a = MyClass()

def say(self, name):
    print(My name is, name)


a.say = types.MethodType(say, a)

a.say(alex)  # My name is alex

 

具体有啥用呢?  基本用不到。 只是适合小部分场景。 比如从网页上抓到了一写代码。 然后我想执行。
不过网页上的 都是一些 js 代码。 想来js 应该也有相同的方法吧。
只是一个思路。 不必较真。

 

如果使用实例化对象,来为类动态的添加一个 字符串形式的 方法。

标签:网页   eth   stat   %s   span   应该   一个   实例化   cme   

原文地址:https://www.cnblogs.com/chengege/p/10958288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!