python - 在 Python 中使用变量作为类名?

标签 python dynamic-typing

我想知道如何在 Python 中为对象和函数名使用变量。在 PHP 中,您可以这样做:

$className = "MyClass";

$newObject = new $className();

你是如何在 Python 中做这种事情的?或者,我是否完全不了解与 Python 的一些根本区别,如果是,那是什么?

最佳答案

假设 some_module 有一个名为“class_name”的类:

import some_module
klass = getattr(some_module, "class_name")
some_object = klass()

我应该注意,在这里您应该小心:如果字符串来自用户,那么将字符串转换为代码可能会很危险,因此在这种情况下您应该牢记安全性。 :)

另一种方法(假设我们仍在使用“class_name”):

class_lookup = { 'class_name' : class_name }
some_object = class_lookup['class_name']()  #call the object once we've pulled it out of the dict

后一种方法可能是最安全的方法,所以如果可能的话,你应该使用它。

关于python - 在 Python 中使用变量作为类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223559/

相关文章:

python - 升级到 PyTorch 1.9 时的潜在错误 ImportError : cannot import name 'int_classes' from 'torch._six'

python - 重新排列 linregress python 中的标题

python - 鸭子类型(duck typing) : how to avoid name collisions?

python - Keras 值错误 : Unknown activation function:<lambda>

python - ProtocolError IncompleteRead 使用请求

python - 打开(文件名,模式)Python

Swift 4 : type(of:self). 描述()与字符串(描述:类型(of:self))不同

terminology - 静态/动态与强/弱

java - Python 编程 - 在 Python 中开发企业级软件的规则/建议?

iphone - 在 UITextField 上键入时在 View 上添加更多 UITextField