我有一個Python模塊,它包含許多類,每個類都代表具有其屬性(例如密度,比熱)的特定物理材料。一些屬性只是該類的成員float
,但許多屬性取決於某個參數,例如溫度。我實現了這個通過@staticmethod
S,即,所有的類看起來像只有靜態方法的類模塊
class Copper(object):
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(object):
...
class Argon(object):
...
...
的Class
ES因此僅僅作爲所有數據的容器,和@staticmethod
S中的丰度有我懷疑有可能是一個更適合這種用例的設計模式。
任何提示?
如果它是靜態的......這意味着它基本上是固定值。如果是這樣,這實際上是數據,並可能更好地處理爲更傳統的數據結構。字典,如果你想創建它的話,如xml/yaml,如果你想從磁盤加載。我甚至曾經寫過一組類,它會加載一個XML並將其作爲屬性公開,所以即使從XML中加載了「metals」,仍然可以執行諸如「metals.copper.magnetic_permeability * 4」之類的操作。像這樣的東西可能會給你兩全其美的... –
但屬性取決於溫度等 –
staticmethod實際上似乎很合適。 –