gpt4 book ai didi

python - 创建一个没有实例的静态类

转载 作者:IT老高 更新时间:2023-10-28 21:34:31 27 4
gpt4 key购买 nike

我在网上看到的所有教程都展示了如何使用 __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”装饰器来实现。

也就是说,Pythonic 的方式是:

# 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)

关于python - 创建一个没有实例的静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com