首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >面向Python对象

面向Python对象
EN

Stack Overflow用户
提问于 2019-11-03 18:48:18
回答 1查看 105关注 0票数 1

我在python中玩面向对象的编程,遇到了一个我以前从未遇到过的错误:

代码语言:javascript
运行
复制
class Main:
    def __init__(self, a , b):
        self.a = a
        self.b = b

    def even(self):
        start = self.a
        slut = self.b
        while start <= slut:
            if start % 2 == 0:
                yield start
            start += 1

    def odd(self):
        start = self.a
        slut = self.b
        while start <= slut:
            if start % 2 != 0:
                yield start
            start += 1

    def display():
        evens = list(num.even())
        odds = list(num.odd())
        print(f"{evens}'\n'{odds}")

num = Main(20, 50)

Main.display()

看看最后一个类方法,其中应该有一个“self”作为Work..Why程序的参数,是吗?我认为每个类方法都应该包含一个“自我”作为参数?这个程序不能用它

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-03 18:53:52

如果打算作为实例方法,应该有一个self参数,如果您试图使用它,即num.display(),您将得到一个错误。

但是,您是通过类调用它的,Main.display只是返回函数本身,而不是method的实例,因此它按-原样工作。

假设您在主体中使用了特定的Main实例(即num),那么您应该用self替换它

代码语言:javascript
运行
复制
def display(self):
    evens = list(self.even())
    odds = list(self.odd())
    print(f"{evens}'\n'{odds}")

并调用它

代码语言:javascript
运行
复制
num.display()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58683503

复制
相关文章

相似问题

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