通常,您应该避免使用全局变量,因为它们会在程序完成之前导入模块,因此它们存在于内存中(第一种情况)
通常,您应该避免在函数内部修复值(第2和第3种情况),因为它使函数可重用.
代替:
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经验法则
第三种方式 - 在方法中定义将被使用
你应该避免这种方式支持第二条经验法则
第4种方式 - 作为班级常数
仅针对共享同一类的所有实例的变量和常量的推荐方式,实际上是什么意思是类级别或类范围