gpt4 book ai didi

python - 包含只有静态方法的类的模块

转载 作者:太空狗 更新时间:2023-10-29 16:57:00 24 4
gpt4 key购买 nike

我有一个包含许多类的 Python 模块,每个类代表一种特定的物理 Material 及其属性(例如,密度、比热)。一些属性只是类的 float 成员,但许多属性取决于某些参数,例如温度。我通过 @staticmethod 实现了这个,也就是说,所有的类看起来都像

class Copper:
magnetic_permeability = 1.0

@staticmethod
def density(T):
return 1.0 / (-3.033e-9 + 68.85e-12*T - 6.72e-15*T**2 + 8.56e-18*T**3)

@staticmethod
def electric_conductivity(T, p):
return 1.0141 * T**2 * p

@staticmethod
def specific heat(T):
return # ...


class Silver:
# ...

class Argon:
# ...

# ...

Classes 仅作为所有数据的容器,大量的 @staticmethods 让我怀疑可能有更合适的设计模式这个用例。

有什么提示吗?

最佳答案

您可以将模块命名为copper 并将所有这些创建为模块级函数,然后import copper;铜.density(0).

但是,如果有人执行 from copper import density,并且您还有一个名为 cobalt 的模块,另一个名为 carbon,另一个名为 chlorine 等等,都有自己的 density 功能?呃哦。

we're all consenting adults here ,您可以将其记录下来并期望您的用户足够了解以仅导入该模块。或者你可以采取你的方法;在这种情况下,我会考虑将所有元素放在一个名为 elements 的模块中,然后用户可以from elements import Copper。静态方法将是合适的。

关于python - 包含只有静态方法的类的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883511/

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