如何将子类变量调用为父类变量



我想在父类中调用子类函数,这样我就可以在父类中获取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"

这样做的问题是,如果子类是从父类继承的实际上并不重要,我认为这违背了目的

最新更新