我认为这是一项相当简单的任务,但它已经变成了我质疑我所知道的关于类的所有内容(事实上它不是很开始)。
我有一个父类,我希望在子类中使用该实例的属性,该子类将从父类的 init 创建。但是,我似乎无法从儿童班中引用它们。
我已经从子类中找到了对 init 父类的一些建议,但是,这只是在我的情况下创建了一个无限循环。
class User(object):
def __init__(self, a, b):
self.a = a
self.b = b
self.child.append(Child(c=4))
class Child(User)
def __init__(self, c):
self.c = c + User.b
print self.c
答案 0 :(得分:0)
从代码和问题来看,我猜测Child实际上只需要访问User的某些属性,在本例中为self.b
继承不是要走的路。继承是指您希望重用许多属性和方法,并重新实现其中的一些属性和方法。像两个班级"汽车"和"卡车"将继承一个类"车辆"
您对"亲子"所描述的内容更像是所有权。类User拥有一些Child(作为属性),并且您希望Child从其所有者访问数据。您需要做的是将所有者(父母)的引用传递给孩子。
class User(object):
def __init__(self, b):
self.b = b
self.child.append(Child(c=4,parent=self))
class Child(object)
def __init__(self, c, parent):
self.parent=parent
self.c = c + self.parent.b
print(self.c)
当然在这个非常简单的例子中,最明显的编程方法是在子构造函数中传递b
,如下所示:
class User(object):
def __init__(self, b):
self.b = b
self.child.append(Child(4,b))
class Child(object)
def __init__(self, c, b):
self.c = c + .b
print(self.c)
但是对于更复杂的任务,将引用传递给父代可能更好或更必要。