首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3:继承和“自我”分配

Python 3:继承和“自我”分配
EN

Stack Overflow用户
提问于 2020-09-06 00:46:41
回答 1查看 82关注 0票数 0

为什么这个脚本需要"self“作为第3行中mssg()的参数?PyCharm将第3行中的"self“标记为”另一个“类型,改为"Main”。这个警告对我来说是有意义的(尽管代码有效)。当省略"self“时,Python会抛出一个错误:

TypeError: mssg()缺少一个必需的位置参数:'self‘

代码语言:javascript
复制
class Main():
    def __init__(self):

        print(Another.mssg(self))

class Another():
    def __init__(self):
        pass

    def mssg(self):
        return "Hello World"

_foo = Main()

使用您的指导,这里有三种不同的防止TypeError的方法:

代码语言:javascript
复制
class Main():
    def __init__(self):

        print(Another.mssg('asdasdsa'))
        print(Another().mssg())
        print(_bar.mssg())

class Another():
    def __init__(self):
        pass

    def mssg(self):
        return "Hello World"
_bar = Another()
_foo = Main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-06 01:05:49

如果您使用Another.mssg(self),那么您将调用一个类方法,这就是为什么使用self作为参数,并且需要使用精确的一个参数来调用函数。尝试print(Another.mssg('asdasdsa')),您就会发现它是有效的。

如果您的意图是使用mssg(self)作为实例方法,那么您应该使用print(Another().mssg())调用它,所以创建实例,然后调用它的方法。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63759736

复制
相关文章

相似问题

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