从父类运行Python类的方法,但保留变量
问题描述:
我有一个python类和一个父类。从父类运行Python类的方法,但保留变量
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)
是否有可能使孩子的方法,以保持从父母方法varables,当它调用它super().food(num)
在其自己版本的方法以后使用。
或者有没有更好的方法来追加到您的父母方法的副本?
编辑:我的实际类比这复杂得多。我只是以此为例。我正在制作一个IRC bot,并且需要一个基础对象,其他机器人可以基于此对象。 (因此有些方法会在某些机器人中添加部分)
答
在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)
答
,如果你想使用父变量时returned.But我会用@Arthur蒟蒻这种方法,这是一个好一点。
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)
答
我想你想为此的init函数。最终它取决于你在做什么。您可能需要一个抽象类或一个承诺在子类中具有某些行为的接口。这很难说。对于这个问题,这样的酒吧是所有富的构造,我会做这样的属性
class foo:
def __init__(self, num1=3):
self.num1 =num1
class bar(foo):
def __init__(self, num2 = 3):
foo.__init__()
self.num2 = self.num1 + num2
答
您可以定义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
所以我cound'回报num1'的父母,然后在孩子'NUM1 =超()。食物(NUM)'? –
是的,你可以做到这一点,但这种方法肯定是一个更好的方法。 – Gumboy