ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

在类中包装全局变量(python)

2019-07-25 18:55:30  阅读:282  来源: 互联网

标签:python oop global-variables


我是编程新手,最近学过python和面向对象编程的基础知识.我知道有很多全局变量通常是一个坏主意,我可以将它们全部放入一个类中.这是正确的方法吗?

class GameState(object):
    def __init__(self):
        self.variable1 = 1
        self.variable2 = 2
        self.list = [3, 4, 5]

g_state = GameState()

而且,如果我希望访问g_state中的变量,那么最好的方法是什么?

将g_state传递给需要访问的函数/类?
实施getter并调用它们?
直接使用g_state.variable1?

或者,还有更好的方法?

编辑:更具体地说,我正在尝试使用pygame在python中编写游戏,并且正在考虑将我的游戏状态变量放入类中,以便不会有一堆全局变量.我不确定如何以良好的设计访问这些变量,所以我以后不会遇到麻烦.

解决方法:

你是对的,太多的全局变量不是一个好主意.污染的全局命名空间可能会导致错误.

但是,不要为了它而把它们放到课堂上.如果你真的有那么多变量,你应该考虑将你的程序分成多个模块.

另外请理解,你不能像在JavaScript中那样在Python中创建全局变量.您的变量始终作用于模块下.

让我举一个例子来说明.模块a.py:

A = 42

模块b.py:

import a

print(A)

你得到了什么? NameError.为什么?因为变量A不是全局的,所以它在模块a下.您需要使用a.A来引用它.

没有必要在类下填充变量.它们位于模块下,它充当命名空间,并且没有任何问题.

标签:python,oop,global-variables
来源: https://codeday.me/bug/20190725/1536211.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有