所以我遇到了这个问题,我想用这种方式获取一个python类的名称:
class TestClass():
myName = (get class name here automatically)
saveDirectory = os.path.join(saveDir, myName) # so i can save it in unique location
def __init__(self):
pass # do something
然而,似乎__class__.__name__
在创建myName
时实际上还不存在。所以我不得不把它放到__init__()
函数中,如下所示:
class TestClass():
def __init__(self):
self.myName = self.__class__.__name__
saveDirectory = os.path.join(saveDir, self.myName) # so i can save it in unique location
pass # do something
但这有一个大问题,因为在实例化类之前,我无法获取类的名称,所以我需要为要保存在saveDirectory中的类的每个实例创建一些千兆字节的数据,以便以后可以重用。所以我不想继续我目前的解决方案。
有没有我想要的类名?还是我只是在做梦?
编辑:
谢谢你们的建议。我将花一点时间来看看元类。否则,我可能会全局创建一个字典,并引用这些实例化的类。
只是用一种方法?
或者您可以只使用一个表示保存目录的类属性;减少魔法通常是一件好事。另外,您可以在以后更改类的名称而不破坏存储空间。
还有,什么?千兆字节?!
在类定义期间实际执行所尝试的操作的唯一方法是使用metaclass:
或者在Python 3.x上:
这显然比仅使用以下方法更不清楚:
自python 3.3以来,您可以使用^{} 变量:
相关问题 更多 >
编程相关推荐