【发布时间】:2015-08-13 22:19:39
【问题描述】:
我在网上看到的所有教程都展示了如何使用 __init__ 构造函数方法创建类,以便可以声明该类型的对象或该类的实例。
我如何创建一个类(Java 中的静态)以便我可以访问该类的所有方法和属性而不必创建新的实例/对象?
例如:
class World:
allElems = []
def addElem(x):
allElems.append(x)
World.addElem(6)
print(World.allElems)
编辑
class World(object):
allAirports = []
@staticmethod
def initialize():
f = open(os.path.expanduser("~/Desktop/1000airports.csv"))
file_reader = csv.reader(f)
for col in file_reader:
allAirports.append(Airport(col[0],col[2],col[3]))
错误:未定义名称“allAirports”
【问题讨论】:
-
为什么要静态类?你想达到什么目标? - 另见:stackoverflow.com/q/10388127/562769
-
不要这样做。我不知道Java对你可怜的灵魂做了什么,但这只能以糟糕的方式结束。
allAirports不仅违反了 PEP 8,而且 - *gasp!* - 一个可变的全局变量。无论你想达到什么目标,你都在尝试以错误的方式实现。 -
另外,对文件使用
with。 -
常规类、静态类和裸函数都有有效的用例。
-
@Jeyekomon 我明白这一点。我认为使用该术语的目的是参考与 Java 的类比。但是,您的措辞表明存在实际区别,我认为澄清值得一提。
标签: python class object static