我在网上看到的所有教程都展示了如何使用__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”
创建静态类的Pythonic方法只是在类之外声明这些方法(Java将类用于对象和对相关函数进行分组,但是Python模块足以对不需要任何对象实例的相关函数进行分组)。但是,如果您坚持在类级别上创建不需要实例的方法(而不是简单地使其成为模块中的独立函数),则可以使用“ @staticmethod”装饰器来实现。
也就是说,Python方式是:
# My module
elements = []
def add_element(x):
elements.append(x)
但是,如果要镜像Java的结构,则可以执行以下操作:
# My module
class World(object):
elements = []
@staticmethod
def add_element(x):
World.elements.append(x)
您还可以做到这一点@classmethod
,如果你愿意知道具体的类(如果你想允许通过一个类继承此类继承的静态方法,它可以很方便):
# My module
class World(object):
elements = []
@classmethod
def add_element(cls, x):
cls.elements.append(x)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句