我基本上是在嘗試為串列中的每個元素分配一個不同的變數。我在下面附上了一些代碼以更好地解釋我的意思:
class Skill:
def __init__(self, name):
skill_detail = SKILLS_LIST[name].values()
self.one = skill_detail[0]
self.two = skill_detail[1]
self.three = skill_detail[2]
self.four = skill_detail[3]
self.five = skill_detail[4]
self.six = skill_detail[5]
self.seven = skill_detail[6]
self.eight = skill_detail[7]
self.nine = skill_detail[8]
我想切換到切片,但最好的方法是什么?任何幫助將不勝感激,謝謝!
語境:
變數基本上是 RPG 游戲中移動的屬性。諸如力量、準確度、優先級、型別、能源成本等。這就是為什么我覺得所有單獨的屬性都是必要的作為自變數,但還不確定。
另外,我知道全域變數/常量很糟糕,但“SKILLS_LIST”是一個從 json 檔案中提取的大型字典,它永遠不會在代碼中發生變異。
uj5u.com熱心網友回復:
我要說的是,您所做的不一定是不好的做法,尤其是當您只有幾個屬性時。
但是您提到將資料從 JSON 檔案加載到字典中,而字典已經是一種創建可變數量變數的編程方式。那么為什么不直接使用字典呢?每當你需要修改或讀取特定屬性,你可以做skills["power"],skills["cost"]等這也很可能是因為您的專案在規模和復雜性的發展更具擴展性。
當然,如果您無法控制所述 JSON 檔案的格式,那會使事情復雜化。在這種情況下,我認為手動加載屬性沒有任何問題。
uj5u.com熱心網友回復:
如果您愿意,我認為為此使用像命名元組這樣的模型類是有意義的。這樣做的一個好處是它本質上只是一個元組,因此它本質上是 JSON 可序列化的,以防您需要將其轉換回如下串列。
import json
from typing import NamedTuple
class MyTup(NamedTuple):
one: str
two: str
three: str
c = MyTup(*["hello", "world", "!"])
print(c)
# MyTup(one='hello', two='world', three='!')
print(c.two)
# world
print(json.dumps(c))
# ["hello", "world", "!"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/327228.html
下一篇:從二維串列中提取專案
