Python-定义仅使用一次的常量变量的最便捷方法

格里梅尔

假设我有一个文件“ icon.ico”和一个URL“ url.com”。
在类中将仅使用一次-“ icon.ico”将设置为某个窗口,我们将使用一种方法来请求url。
我有三种定义这些变量的方法。

第一种方法-定义为全局常数

#in the top of the file
ICON = "icon.ico"
URL = "http://url.com"

#and then
def setIcon(self):
    self.setWindowIcon(QtGui.QIcon(ICON))

def getData(self):
    content = requests.get(URL).content

第二种方式-定义为类的变量

def __init__(self):
    self.url = "http://url.com"
    self.icon = "icon.ico"

第3种方法-在将要使用的方法中进行定义

def setIcon(self):
    icon = "icon.ico"

def getData(self):
    url = "http://url.com"
波斯波卡

经验法则

  • 通常,应避免使用全局变量,因为自从导入模块直到程序完成,它们就存在于内存中(第一种情况)
  • 通常,应避免在函数内部固定值(第二种和第三种情况),因为这会使函数可重复使用。

代替:

def __init__(self):
    self.url = "http://url.com"
    self.icon = "icon.ico"

要么

def setIcon(self):
    icon = "icon.ico"

首选:

def __init__(self, url, icon):
    self.url = url
    self.icon = icon

或者,如果您认为这些值将保持90%相同:

def __init__(self, url="http://url.com", icon="icon.ico"):
    self.url = url
    self.icon = icon

何时使用每种情况的提示

第一种方法-定义为全局常数

  • 该常量具有模块作用域常量的意义。请记住,可以在同一模块内声明多个类和函数。这意味着该常量将在整个模块中使用,并且它不属于任何特定的类。
  • 您需要快速找到常数,通常是要更改其值。在这种情况下,您可能实际上并不需要一个常数,而是一个变量。

第二种方式-定义为类的变量

  • 如果它是该类变量,则它不是常数。如果你想使用一个常量或变量的类的(例如在什么水平是一流的水平,而不是),你应该使用4个方法-作为一个一流水平不变
  • 如果您想要实例级别的常量或变量,则应使用2dn经验法则

第3种方法-在将要使用的方法中进行定义

  • 您应该避免使用第二种经验法则

第4种方式-作为类级别常量

  • 仅对共享同一类的所有实例的变量和常量推荐的方式,实际上意味着类级别类范围

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章