请看下面的示例代码,它在一个文件中,比如说
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
。但是,它确实返回了 method somemethod
。
我试图获取属性的原因如下: 模块classattr
被导入到另一个文件中,其中类的名称classattr.BaseClass
或者classattr.ChildOfBaseClass
作为某个函数的输入提供。我想在运行时确定它是哪一个,然后在创建实例时使用适当的输入(如果是前者,或者是后者的所有参数param1
)。我正在考虑这样做的方式是检查该类是否具有属性,然后使用正确的输入创建实例。还有其他更好的检查方法吗?另一种方法是将和作为输入param2
param1
param4
param3
param3
param4
BaseClass
即使他们什么都不做,然后总是用所有四个参数作为输入来创建实例。但这似乎不是合适的做事方式。
谢谢你。