请看下面的示例代码,它在一个文件中,比如说
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)。我正在考虑这样做的方式是检查该类是否具有属性,然后使用正确的输入创建实例。还有其他更好的检查方法吗?另一种方法是将和作为输入param2param1param4param3param3param4BaseClass即使他们什么都不做,然后总是用所有四个参数作为输入来创建实例。但这似乎不是合适的做事方式。
谢谢你。