Python如何在运行时创建类的方法

丹尼斯·科托夫

我很好奇如何在运行时为类创建自定义方法...

我的意思是例如方法名称、参数名称、从数据库读取的方法主体并将此方法分配给一个类或一个实例。

我发现可以添加已经编写的方法:

class A:
    def __init__(self):
        pass

def method(self):
    return True

A.method = method
a = A()
print(a.method())

但我有兴趣从头开始完全组装一种新方法:

name = "method"
params = ["self"] # Params in list should be a strings
body = "return True"
# To create method from pieces

可以使用__dict__吗?或者如何做到这一点?

斯蒂芬·劳赫

方法是作为类的对象的另一个属性。它们可以像其他属性一样添加:

代码:

class A:
    def __init__(self):
        pass

    def method(self):
        return True

def another_method(self):
    return False

setattr(A, 'another_method', another_method)

测试代码:

a = A()
print(a.another_method())

结果:

False

来自字符串的方法:

添加是否确实需要从数据库中获取方法,或者可以使用 exec ,例如:

method_string = """

def yet_another_method(self):
    return type(self).__name__

"""

exec(method_string)
setattr(A, 'yet_another_method', yet_another_method)

a = A()
print(a.yet_another_method())

结果:

A

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在运行时在现有类中创建方法?

来自分类Dev

如何在运行时使用python动态创建新的类实例?

来自分类Dev

如何在运行时动态创建C#类(根据现有类)

来自分类Dev

在运行时从protobuf文件动态创建python类?

来自分类Dev

如何在运行时从ObservableCollection <T>派生的类的实例创建?

来自分类Dev

如何在运行时在Java中创建新添加的类的实例

来自分类Dev

在运行时动态创建类

来自分类Dev

如何在运行时找出类的来源?

来自分类Dev

如何在运行时获取父类

来自分类Dev

如何在运行时找出类的来源?

来自分类Dev

如何在运行时转换类的属性?

来自分类Dev

如何在运行时从 dll 引用静态类

来自分类Dev

如何在运行时从C ++创建QQmlComponent?

来自分类Dev

如何在运行时递归创建ActionBar?

来自分类Dev

如何在运行时创建表达式

来自分类Dev

如何在运行时动态创建Predicate <T>

来自分类Dev

如何在运行时创建该类的实例

来自分类Dev

如何在运行时递归创建ActionBar?

来自分类Dev

如何在运行时创建表达式

来自分类Dev

如何在运行时映射表创建?

来自分类Dev

Python:在运行时重新定义类方法

来自分类Dev

如何在运行时Objective-C中重写/处理私有类的方法?

来自分类Dev

如何在运行时为Obj-C添加类方法?

来自分类Dev

Python - 如何在运行时屏蔽一个类在 unittest 中执行

来自分类Dev

Grails如何在运行时创建方法Ex obj.setName(“ Abhay)

来自分类Dev

如何在运行时在python中创建文件句柄?

来自分类Dev

如何在运行时在python app-engine上创建文件:live或localhost

来自分类Dev

如何在运行时更改静态方法的行为?

来自分类Dev

如何在运行时重写FormControl方法?

Related 相关文章

热门标签

归档