首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python面向对象在主函数中创建对象

Python面向对象在主函数中创建对象
EN

Stack Overflow用户
提问于 2022-07-25 12:33:21
回答 1查看 66关注 0票数 -1

我是Python中面向对象的新手,我对如何使用面向对象的方法感到有点困惑。

代码语言:javascript
复制
class Beta(object):
    def __init__(self,message='defualt msg'):
        self.message = message
        
    def foo(self):
        return self.message
    def main():
        beta1 = Beta()
        messege = beta1.foo()

    
    if __name__ == '__main__':
        main()

以下代码返回以下错误NameError: name 'Beta' is not defined,但以下代码工作正常:

代码语言:javascript
复制
    from time import sleep

    def foo(data):
        print("Beginning data processing...")
        modified_data = data + " that has been modified"
        sleep(3)
        print("Data processing finished.")
        return modified_data

    def main():
        data = "My data read from the Web"
        print(data)
        modified_data = foo(data)
        print(modified_data)

    if __name__ == "__main__":
        main()

唯一的区别是类可以在main中创建一个对象,或者直接从main调用函数,或者我们需要显式地在类之外创建一个对象。

在Java或C#中,我们可以在任何类函数中使用类名来调用另一个函数,而在Python中,这是一个生成相同错误的脚本。

代码语言:javascript
复制
    class Test():
    def foo() :
        print('Hello ')

    def bar():
        foo()
        print('world')
    def run():
        test = Test()
        test.bar()

    run()
EN

回答 1

Stack Overflow用户

发布于 2022-07-25 12:41:22

正确的缩进是

代码语言:javascript
复制
class Beta(object):
    def __init__(self,message='defualt msg'):
        self.message = message
        
    def foo(self):
        return self.message

def main():
    beta1 = Beta()
    messege = beta1.foo()


if __name__ == '__main__':
    main()

函数main使用Beta;它不应该是Beta的一部分。同样,if语句确保main只在文件作为脚本使用时才被执行,而不是在导入文件时执行,因此也同样不是类Beta的一部分。

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

https://stackoverflow.com/questions/73109322

复制
相关文章

相似问题

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