这种方法一开始可能是错误的,但我正试图做到以下几点:
class Material:
pass
class Vacuum(Material):
def __str__(self):
return 'vacuum'
class Aluminum(Material):
def __str__(self):
return 'aluminum'
class Graphite(Material):
def __str__(self):
return 'graphite'
class Beryllium(Material):
def __str__(self):
return 'beryllium'
我有不同的代码处理不同的材料。与其将字符串作为参数传递给其他片段,我更愿意给它对象。这允许使用ipython
完成制表符,也是强制执行类型的一种方法
为了避免更改已经编写好的部分,只需执行str(argument)
:如果是字符串,则恢复旧行为;如果是对象,则恢复旧行为
现在的问题是:我想支持一个给定的材料列表:
allowed_materials = ['vacuum', 'aluminum', 'graphite',]
这个名单可能会越来越多。如何根据列表生成类,而不是手动编写类
如果不同的材质不需要不同的类名,只需在material类中初始化即可。否则我将删除我的答案
输出:
我完成了以下操作,还向模块中添加了对象
您可以定义一个元类来为您生成类
相关问题 更多 >
编程相关推荐