从类中获取常量,排除可能来自父母的所有常量,可以使用Python的inspect
模块来实现。以下是一个示例代码:
import inspect
class Parent:
CONST_PARENT = "parent_const"
class Child(Parent):
CONST_CHILD = "child_const"
def get_constants(cls):
constants = {}
for name, value in inspect.getmembers(cls, lambda x: isinstance(x, type(cls))):
if name.startswith("CONST_"):
constants[name] = value
return constants
def get_child_constants(cls):
child_constants = {}
for name, value in get_constants(cls).items():
if not hasattr(Parent, name):
child_constants[name] = value
return child_constants
child_constants = get_child_constants(Child)
print(child_constants)
在这个示例中,我们定义了一个Parent
类和一个继承自Parent
的Child
类。Child
类中有一个常量CONST_CHILD
,而Parent
类中有一个常量CONST_PARENT
。我们定义了一个get_constants
函数,用于获取类中的所有常量,并定义了一个get_child_constants
函数,用于获取子类中的所有常量,排除父类中的常量。
get_constants
函数使用inspect.getmembers
方法来获取类中的所有成员,并使用isinstance
函数来判断是否为类的成员。如果成员名称以CONST_
开头,则将其添加到constants
字典中。
get_child_constants
函数使用get_constants
函数来获取子类中的所有常量,并使用hasattr
函数来判断是否存在于父类中。如果不存在于父类中,则将其添加到child_constants
字典中。
最后,我们调用get_child_constants
函数来获取Child
类中的所有常量,排除父类中的常量,并将结果打印出来。
领取专属 10元无门槛券
手把手带您无忧上云