当前位置: 首页 > 面试题库 >

如何在Python中从继承的类设置和获取父类属性?

鲜于念
2023-03-14
问题内容

我有Family及其继承的Person类。如何familyNamePerson课程中获取属性?

class Family(object):
    def __init__(self, familyName):
        self.familyName = familyName

class Person(Family):
    def __init__(self, personName):
        self.personName = personName

举例来说,让这些FamilyPerson对象:

strauss = Family('Strauss')
johaness = Person('Johaness')
richard = Person('Richard')

我想做一些事情,例如:

print richard.familyName

并得到'Strauss'。我怎样才能做到这一点?


问题答案:

你不能。

实例仅继承父类的方法和属性,而不继承 实例 属性。您不应混淆两者。

strauss.familyName实例的实例 属性Family。本Person实例将有他们 自己
的副本familyName属性。

通常,您将对Person构造函数进行编码以采用两个参数:

class Person(Family):
    def __init__(self, personName, familyName):
        super(Person, self).__init__(familyName)
        self.personName = personName

johaness = Person('Johaness', 'Strauss')
richard = Person('Richard', 'Strauss')

另一种方法是Person保留对Family实例的引用:

class Person(object):
    def __init__(self, personName, family):
        self.personName = personName
        self.family = family

Person从那里不再继承Family。像这样使用它:

strauss = Family('Strauss')
johaness = Person('Johaness', strauss)
richard = Person('Richard', strauss)

print johaness.family.familyName


 类似资料:
  • 我正在尝试从Car的父类中获取一个参数并将其添加到我的数组(),我如何做到这一点呢? 父类 子类 最后一个问题法 公共字符串getCarsByColor(字符串CarColor) { 到目前为止,我已经有了这个,所以如果在参数中加入“red”,它将列出所有红色的汽车和相应的信息,但似乎不起作用~_~。

  • 问题内容: 我在使用Python super()和继承和属性时遇到了一个非常奇怪的问题。一,代码: 这很好。但是,我想要的(对我来说似乎是Pythonic) 即使不起作用 得到很好的价值。在这种情况下,x是同时定义了fset和fget的超类的属性。那为什么不起作用呢? 问题答案: 我试图找到正确的语言来支持这种行为的原由,以免给您一个“因为它就是”答案……但是似乎这个问题已经被问了不止一次了,并且

  • 在面向对象的程序设计中,定义一个新的 class 的时候,可以从某个现有的 class 继承,新的 class 称为子类,而被继承的 class 称为基类、父类或超类。 Python 中继承的语法如下: class Parent: pass class Child(Parent): pass 在第 1 行,定义了父类 Parent; 在第 4 行,定义了子类 Child,语法

  • 问题内容: 我想向内置类型添加一些属性,所以我这样写: 但仅包含元素。为什么我在这里不工作?我应该如何从类似内置类型的继承?像这样的不可变类型是否相同? 问题答案: 该类型通常在其方法内进行列表的实际初始化,因为这是可变类型的约定。子类型化不可变类型时,只需要覆盖即可。虽然 可以在对列表进行子分类时覆盖,但对于您的用例而言,这样做没有多大意义。覆盖比较容易: 另请注意,在这种情况下,建议不要使用。

  • ts 如何继承父类并修改属性? 相关代码

  • 问题内容: 在PHP / Java中,可以做到: 并且,Super类的所有公共/受保护的方法,属性,字段等都会自动成为Sub类的一部分,如有必要,可以重写这些类。 Javascript中的等效功能是什么? 问题答案: 我已经更改了现在的操作方式,我尝试避免使用构造函数和它们的属性,但是我从2010年起的旧答案仍然是最底层的。我现在更喜欢。适用于所有现代浏览器。 我应该注意,这通常比使用函数构造函数