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

为什么这个脚本需要“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()


森栏
浏览 84回答 1
1回答

慕容708150

如果您使用Another.mssg(self),那么您正在调用一个类方法,这就是为什么self将其作为参数,并且您需要仅使用一个参数来调用该函数。尝试一下print(Another.mssg('asdasdsa')),你会发现它有效。如果您的意图是用作mssg(self)实例方法,那么您应该使用调用它print(Another().mssg()),这样您就创建了实例,然后调用它的方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python