有没有办法隐藏或嵌套Cat
属性在Animal
中,同时仍然能够运行跳转函数?具体来说,我希望vars(test)
的输出仅为年龄。我确信我可以通过定义一个自定义的__str__
硬编码哪些特定的属性不输出,但是我将有很多Cat/Animal
的属性,我不想为每个单独的属性手动添加一个异常。我也不能访问Cat
类
def Jump():
print('Jumped!')
class Cat:
def __init__(self):
self.feet = 4
self.jump = Jump
class Animal(Cat):
def __init__(self):
Cat.__init__(self)
self.age = 3
test = Animal()
test.jump()
print(vars(test))
输出:
Jumped {'feet': 4, 'jump': , 'age': 3}
这只是一段代码来说明我要做的事情。实际上,Cat
表示已发布的python模块,Animal
表示我的自定义模块
如果你改变你的关系,使
Animal
不再是一个^{Cat
,而是一个^{Cat
,那么你是对的,animal.jump()
将不再工作有很多方法可以解决这个问题。考虑到这个设计已经很奇怪了,在很多不同的方面,我不知道哪一个是最合适的,所以我只列出一大堆
第一组是只显式委托
jump
的方法“正常”方式:
复制每个实例函数:
委托给每个实例函数:
每实例绑定方法:
动态查找:
动态绑定方法生成:
当然,所有这些都只是具体地委托
jump
。如果您想委托给所有Cat
函数、方法,或者其他属性,而不必事先知道它们是什么,该怎么办?好吧,应该很明显如何适应这些,所以我只展示两个动态查找:
半静态检查,对我们可能要委托的不同类型的事情进行复杂的反映:
相关问题 更多 >
编程相关推荐