繁体   English   中英

Python3-父类的调用方法

[英]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_helloMyException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM