为什么这个脚本需要"self“作为第3行中mssg()的参数?PyCharm将第3行中的"self“标记为”另一个“类型,改为"Main”。这个警告对我来说是有意义的(尽管代码有效)。当省略"self“时,Python会抛出一个错误:
TypeError: mssg()缺少一个必需的位置参数:'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()发布于 2020-09-06 01:05:49
如果您使用Another.mssg(self),那么您将调用一个类方法,这就是为什么使用self作为参数,并且需要使用精确的一个参数来调用函数。尝试print(Another.mssg('asdasdsa')),您就会发现它是有效的。
如果您的意图是使用mssg(self)作为实例方法,那么您应该使用print(Another().mssg())调用它,所以创建实例,然后调用它的方法。
https://stackoverflow.com/questions/63759736
复制相似问题