Python 2.7 Python中继承的工作原理

Python 2.7 Python中继承的工作原理,python-2.7,python-3.x,ui-automation,Python 2.7,Python 3.x,Ui Automation,我是Vikki,我正在努力学习python。 我有以下疑问, 我有一个基类 class Parent: def returnsString(self, str): return self.txt 类似地,父类中几乎没有其他函数,如 returnInt、returnBool等 现在我创建了另一个类: class Child(Parent): def main(): obj = Child() print('Trying Inheriting he

我是Vikki,我正在努力学习python。 我有以下疑问, 我有一个基类

class Parent: 
     def returnsString(self, str):
          return self.txt
类似地,父类中几乎没有其他函数,如 returnInt、returnBool等

现在我创建了另一个类:

class Child(Parent):
   def main():
   obj = Child()
   print('Trying Inheriting here : ',obj.returnsString())

AttributeError: 'Child' object has no attribute returnsString
现在,在Java中,当我们扩展一个类时,我们就可以直接访问基类方法和对象,但就像在python中一样,如果我尝试类似的方法,我就不能这样做

每次我重写函数时,是否可以访问基类或python中的所有方法和属性,
有人能帮我一下吗。

这段代码中当前的错误是您自行调用了Child()方法<代码> Obj= Class()/代码>这意味着您实例化了一个自身的副本而不是一个父类对象,这不是好的实践IMO。如果您想访问来自同一对象的其他项目,请考虑显式声明<代码> Surviv.<代码>。这增加了可读性和整洁性。

您可能需要的任何其他内容都非常详细,python.org参考是您获得答案的最佳选择

注意,不要认为类和它们的方法可能会从py2到py3发生重大变化。我已经考虑过py3下的答案

PPS。使用以下代码并再次运行它

obj = Parent;

购买力平价。总是试着去写这是断线的地方。这对初学者来说更好,解释器可能会给您提供更清晰的错误报告。

您的代码中有一些错误。 首先,我对基类的定义很模糊。self.txt属性分配在哪里?您没有定义构造函数,在构造函数中您应该初始化所有属性。也。对于
returnsString
方法,您实际上不需要
str
参数,因为您所做的只是返回
self.txt
的值。 试着这样做:

class Parent: 
    def __init__(self):
        self.txt = "Base class str."

     def returnsString(self):
          return self.txt
class Child(Parent):
    pass
如果不希望在派生类中重载任何内容,其定义可能如下所示:

class Parent: 
    def __init__(self):
        self.txt = "Base class str."

     def returnsString(self):
          return self.txt
class Child(Parent):
    pass
通过此设置,您现在可以测试
returnsString
方法:

def main():
    obj = Child()
    print('Trying Inheriting here : ', obj.returnsString())

if __name__ == '__main__':
    main()
执行Python脚本的输出将是:

正在尝试在此处继承:基类str


对于如何通过派生类实例调用基类方法的问题,简短的回答是:
super(Child,obj)。returnsString()
,其中
obj
是派生类的实例,
Child
是派生类的名称。谢谢Georgi,一定会标记您的建议,再次非常感谢:)如果您愿意接受它作为一个答案或指出,我将不胜感激。很高兴我能帮忙。