我想在父类中调用子类函数,这样我就可以在父类中获取child的值并使用它。
我想在父类中打印孩子的年龄。我怎么称呼它呢?我已经尝试了其他人的解决方案,但这里有一些依赖关系,我有在那里我必须创建父对象,并调用其所有的功能和相同的孩子。我正在学习继承,现在它把我弄糊涂了。
class Parent():
def __init__(self):
self.name = name
def parent_age(self):
age_p = "44"
print("the child f{age_p}")
class Child(Parent):
def __init__(self, parent_name):
self.name = parent_name.name
def child_age(self):
age = "13"
print("the child f{age}")
p = Parent()
p.parent_age()
c = Child(p)
c.child_age()
您无法在基类中访问派生类的变量。您编写类的方式允许创建没有子对象的父对象。另外,你的类没有意义,因为它们基本上是在说child是parent的一种类型。
相反,你应该有一个子类和父类,它们以类似于列表的形式包含子对象。然后你可以访问父类中的所有子属性。
- 你在父类的init函数中也有一个错误-你没有将name作为参数传递
下面是你应该做的一个例子:
class Child():
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'Child name: {self.name}, age: {self.age}'
class Parent():
def __init__(self, name, age, children):
self.name = name
self.age = age
self.children = children
def __str__(self):
s = f'Parent name: {self.name}, age: {self.age}'
for child in self.children:
s = s + 'n* ' + str(child)
return s
p = Parent('Ted', 43, (Child('Ann', 12), Child('Chris', 6)))
print(p)
输出:
Parent name: Ted, age: 43
* Child name: Ann, age: 12
* Child name: Chris, age: 6
如果你注意到,在一些父属性和子属性上有重复。那是因为他们有一些共同点——他们都是人。它们都有一些共同的属性,比如都有年龄,都有名字。
如果你愿意,你可以创建第三个类——person——父类和子类都将从它继承。
有一些奇怪的变通方法
class Parent():
def __init__(self, name):
self.name = name
def parent_age(self, child):
age_p = "44"
print("the child is", child.age)
class Child(Parent):
def __init__(self, parent):
self.name = parent.name
self.age = None
def child_age(self, age):
self.age = age
# Create parent and child class
p = Parent("Father")
c = Child(p)
# Call the child class' child_age method to set the age
c.child_age(12)
# Call the parent class' parent_age method
p.parent_age(c)
返回
"the child is 12"
这样做的问题是,如果子类是从父类继承的实际上并不重要,我认为这违背了目的