我想定义一个与父函数同名的函数,它返回父函数可以接收和使用的值。尽管我认为用元类实现这一点是可能的,但我不确定如何做到这一点(假设这是可能的),以及是否有更好、更干净的解决方案。你知道吗
我想要的格式如下所示。Child
类将由我以外的开发人员定义,因此我希望限制尽可能少。(例如,在理想情况下,我不想用super(Child).f(a)
来代替return a
。)我也不确定如何在我的模型中使用关键字参数,这更可取。你知道吗
class Parent:
def f(self, arg):
print("Received {}.".format(arg))
return arg ** 3
class Child(Parent):
def f(self, c, b, a):
print(a, b, c)
return a
# Prints "2 1 0" and "Received 2.". Sets value to 8.
value = Child().f(0, 1, 2)
这种说法有一个关键问题:
请问,这有什么必要?你知道吗
子类中的
f
与父类中的f
完全不同,因此将它们命名为同一事物是非常令人困惑的,即使您确实让它工作了。你知道吗假设我使用
Parent
编写了子类:我希望
Child().f()
返回2,但是如果您在添加arg ** 3
的幕后添加隐藏逻辑,那么我将得到8,并且完全困惑并诅咒您的库添加了非常不直观的规则。你知道吗相反,为什么不使用一个函数并在子类中定义额外的逻辑助手函数:
当然,是的,从技术上讲,可以通过meta-class实现自动化。但是,对于任何使用
Parent
类的人来说,这都是完全混淆的但是请不要这样做,这是违反the zen
相关问题 更多 >
编程相关推荐