首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python类实例变量继承机制

Python类实例变量继承机制
EN

Stack Overflow用户
提问于 2016-04-21 15:14:42
回答 1查看 1.6K关注 0票数 2

如果我运行这个代码:

代码语言:javascript
运行
复制
class Super:    
    def __init__(self, name):
        self.name = name


class Sub(Super):
    def publ(self):
        print("works")

a = Sub()

按照计划,它成功地失败了这个消息:

代码语言:javascript
运行
复制
TypeError: __init__() takes exactly 2 arguments (1 given)

但这给了我一个困扰的问题:

在哪里存储有关参数条目的子类要求的信息?我的意思是SUB()如何知道它需要“名称”作为论据?是什么机制定义了它是如何从Super()继承“知识”的。

EN

回答 1

Stack Overflow用户

发布于 2016-04-21 15:20:15

Python教程有一个关于继承的章节

如果未在类中找到请求的属性,则搜索将继续在基类中查找。如果基类本身是从其他类派生的,则递归应用此规则。

调用Sub()时,解释器将在类对象中查找名为__init__的属性。如果它找到了,它就会使用它。如果它找不到它(在你的例子中就是这样),它将搜索这个类的基类。在您的示例中,它找到了从类__init__继承的Super方法。解释器将继续调用该方法。

您可以通过下列任何一种方法修复您的示例:

代码语言:javascript
运行
复制
a = Sub('John Doe')

或者:

代码语言:javascript
运行
复制
class Sub(Super):
    def __init__(self):
        super(Sub, self).__init__("My Name Is Sub")

    def publ(self):
        print("works")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36773791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档