[英]Python3 - call method from parent class
我需要从MyException
类运行say_hello()
方法。 可能吗?
class MyClass:
def say_hello():
print('Hello!')
class MyException(Exception):
def __init__(self, *args, **kwargs):
# say_hello()
super().__init__(*args, **kwargs)
try:
do_something()
except Exception:
raise self.MyException("Something goes wrong, I'll just say hello")
您可以继承MyClass,我认为这是您的意图(???):
class MyClass:
def say_hello(self):
print('Hello!')
class MyException(MyClass, Exception):
def __init__(self, *args, **kwargs):
self.say_hello()
super(MyException, self).__init__(*args, **kwargs)
或者,您可以将其say_hello()
静态方法(考虑到say_hello()
没有自变量,也许这就是您的意思),但这使其不比函数调用好:
class MyClass:
@staticmethod
def say_hello():
print('Hello!')
class MyException(Exception):
def __init__(self, *args, **kwargs):
MyClass.say_hello()
super(MyException, self).__init__(*args, **kwargs)
或者以MyClass为例
class MyClass:
def say_hello(self):
print('Hello!')
class MyException(Exception):
def __init__(self, instance, *args, **kwargs):
instance.say_hello()
super(MyException, self).__init__(*args, **kwargs)
exc = MyException(MyClass(), ...)
不能。嵌套类在Python中不是特殊的,并且无法访问包含的类。 因此,很少有理由使用它们。
我怀疑您来自Java。 您在这里根本不需要MyClass
; 只需在模块级别定义say_hello
和MyException
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.