在Python2中,我是否可以在不带参数的情况下调用uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?
我正在用Python 2.7编程。在Ruby等其他语言中,在方法中可以调用在Python2中,我是否可以在不带参数的情况下调用uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?,python,python-2.7,init,super,superclass,Python,Python 2.7,Init,Super,Superclass,我正在用Python 2.7编程。在Ruby等其他语言中,在方法中可以调用super,这样就不需要指定调用super-super的参数。在super调用中省略参数,使用与调用给定方法相同的参数调用给定的super方法 下面是StackOverflow问题的一个示例: class-Foo def baz(str) 带'+str'的p'父级 结束 结束 类Bar
super
,这样就不需要指定调用super
-super
的参数。在super
调用中省略参数,使用与调用给定方法相同的参数调用给定的super方法
下面是StackOverflow问题的一个示例:
class-Foo
def baz(str)
带'+str'的p'父级
结束
结束
类Bar'parent with test'\'child with test'
如您所见,类中的方法baz
包含调用super
而无需任何参数,并且super类中的超级方法baz
会使用相同的参数隐式调用作为子类Bar
出于各种原因,这非常方便,虽然编程中的隐式行为显然有其缺点,在一个子类中有一个\uuuuu init\uuuuu
方法,该方法在该子类中进行处理,然后通过super
调用\uuuuu init\uuuuu
,而不必知道超类中的\uuuuu init\uuu
的参数,这是非常有用的
请帮忙,任何建议都会有用的。我一直在寻找答案,但找不到答案。我已经看到了许多关于StackOverflow的问题和答案,关于Python中的\uuu init\uuu
和super
,但是nonw关于调用super
的语法是否不需要指定参数,并使用与在子类中调用的给定方法相同的参数来调用它
我试图做的与Python中的try
中的raise
非常相似,除了,raise
构造之外:
试试看:
linux_交互()
除异常作为错误外:
记录器。严重(str(错误))
提升
在上面的代码块中,我捕获所有异常,将任何异常记录为严重异常,然后仅调用raise
,不使用任何参数就抛出它。没有参数的raise
调用语法会导致抛出名为error
的变量中捕获的异常,并保留调用堆栈/堆栈跟踪。如果调用的是raiseerror
,而不是raise
,则错误起源的堆栈跟踪将丢失
我在这里尝试做类似的事情,只需调用super,并使用与给定方法相同的参数调用super方法,而不需要知道它们是什么,也不需要指定它们——这会很方便,对吗
任何人都知道这是否可能,如果可能,Python 2.7中的语法是什么?不,在Python中不能这样做super()
只是从MRO中的另一个类中查找和绑定方法的一种方式,从那里它只是一个普通的函数调用,就像任何其他调用一样。编写一个包装函数,然后用装饰器应用它?不管怎样,您都必须硬编码当前类名。简短的回答是:不,您需要在Python 2中为super
提供参数。据我所知,Python的super
比Ruby关键字更为通用;它被设计为支持多重继承,Ruby不支持。不可能在定义当前类之前对其命名,因此还需要使用类装饰器和元类2<代码>检查。签名
在python2中不存在,我懒得去寻找后端口,还有3。即使在python3\uuuu中,class\uuuuuuuuuuuuuuu>也不能在类范围内使用,只能在方法范围内使用,因此元类可能是唯一合理的方法。