为了账号安全,请及时绑定邮箱和手机立即绑定

Python 3:“self”的继承和赋值

Python 3:“self”的继承和赋值

森栏 2023-07-18 15:05:29
为什么这个脚本需要“self”作为第 3 行 mssg() 的参数?PyCharm 在第 3 行将“self”标记为,预期类型为“Another”,却得到了“Main”。这个警告对我来说很有意义(尽管代码有效)。当省略“self”时,Python 会抛出错误:类型错误:mssg() 缺少 1 个必需的位置参数:'self'class Main():    def __init__(self):        print(Another.mssg(self))class Another():    def __init__(self):        pass    def mssg(self):        return "Hello World"_foo = Main()根据您的指导,以下是防止 TypeError 的三种不同方法: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()
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信