Python类从父类运行方法,但保留变量

2024-04-19 22:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python类和一个parent类。你知道吗

class A:
    def foo(self, num):
        num1 = num + 3
        print(num1)

class B(A):
    def foo(self, num):
        super().foo(num)
        num2 = num1+3
        print(num2)

当子方法在super().food(num)中调用父方法以便稍后在其自己的方法版本中使用时,它是否可能保留父方法中的变量。你知道吗

或者有没有更好的方法附加到父方法的副本中?你知道吗

编辑:我的实际类要比这个复杂得多。我只是举个例子。我正在做一个IRC机器人,想要一个基本对象,其他机器人可以基于它。(因此某些方法会在某些机器人程序中添加部分)


Tags: 方法self版本foofooddef机器人num
3条回答

您可以将num1定义为实例变量,然后就可以在B类中使用它。你知道吗

class A(object):
    def foo(self, num):
        self.num1 = num + 3
        print(self.num1)

class B(A):
    def foo(self, num):
        super(B, self).foo(num)
        num2 = self.num1 + 3
        print(num2)

https://docs.python.org/2/tutorial/classes.html#class-and-instance-variables

如果要在以下情况下使用父变量,则可以使用此方法回来了,但是我会用@Arthur Tacca,它更好一点。你知道吗

class A:
    def foo(self, num):
        num1 = num + 3
        return num1 

class B(A):
    def foo(self, num):
        num1 = super().foo(num)
        num2 = num1+3
        print(num2)
G = B().foo(4)

在Python中,在成员函数中指定的变量不仅仅是继承树中该类的本地变量;它们甚至不可用于同一类的其他方法,或者在稍后再次调用该成员函数时也不可用于该成员函数。换句话说,它们只是普通的局部变量。要分配给对象成员变量,必须显式指定对象

class A:
    def foo(self, num):
        self.num1 = num + 3
        print(self.num1)

class B(A):
    def foo(self, num):
        super().foo(num)
        self.num2 = self.num1+3
        print(self.num2)

相关问题 更多 >