【发布时间】:2012-06-05 00:36:19
【问题描述】:
请看下面的示例代码,它在一个文件中,比如说
classattr.py
class BaseClass(object):
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2
def somemethod(self):
return "This is returned when I do Base.__dict__"
class ChildOfBaseClass(BaseClass):
def __init__(self, param1, param2, param3, param4):
super(ChildOfBaseClass, self).__init__(param1, param2)
self.param3 = param3
self.param4 = param4
def somemethod(self, param3, param4):
a = param3 + param4
return a
我想在创建任何实例之前获取类的所有属性(我假设param1、param2 等称为属性)。命令dir(classattr.BaseClass) 没有列出param1 和param2。然而,它确实返回了方法somemethod。
我试图获取属性的原因如下:模块 classattr 被导入到另一个文件中,其中类的名称classattr.BaseClass 或 classattr.ChildOfBaseClass 提供为某个函数的输入。我想在运行时确定它是哪一个,然后在创建实例时使用适当的输入(param1 和param2,如果是前者,或者所有参数param1 到param4,如果是后者)。我正在考虑这样做的方式是检查该类是否具有 param3 作为属性,然后使用正确的输入创建实例。还有其他更好的检查方法吗?另一种方法是将param3 和param4 作为BaseClass 中的输入,即使它们不执行任何操作,然后始终使用所有四个参数作为输入来创建实例。但这似乎不是合适的做事方式。
谢谢。
【问题讨论】: