Python 3.5:提取类中加密货币变量的非switch实现方法
嘿,我来给你几个不用模拟switch(毕竟Python 3.5本身也没有原生switch语句嘛😉)就能提取类中加密货币变量值的实用方法,都是很Pythonic的路子:
方法1:直接访问实例属性或遍历
__dict__ 类的实例会把自身的属性存在__dict__字典里,你可以直接通过属性名获取单个值,也能批量遍历所有属性:
# 先定义你的加密货币类 class CryptoValues: def __init__(self): self.Bitcoin = 50000 self.Monero = 150 self.Ethereum = 3000 # 帮你修正了拼写哦~ # 实例化类 crypto = CryptoValues() # 单个提取值 btc_value = crypto.Bitcoin xmr_value = crypto.Monero print(f"Bitcoin当前值:{btc_value}") # 批量提取所有加密货币值(如果类里没有其他无关属性的话) for crypto_name, value in crypto.__dict__.items(): print(f"{crypto_name}: {value}")
如果类里还有其他非加密货币的属性,你可以加个过滤条件,只提取你关心的币种:
target_cryptos = ["Bitcoin", "Monero", "Ethereum"] for name in target_cryptos: if hasattr(crypto, name): print(f"{name}: {getattr(crypto, name)}")
方法2:用
getattr()动态获取值 如果你的币种名称是字符串形式(比如从用户输入、配置文件里读取的),getattr()会比一堆if-elif灵活太多:
crypto = CryptoValues() # 假设你有个要查询的币种列表 query_list = ["Bitcoin", "Ethereum"] for crypto_name in query_list: # 第三个参数是找不到属性时的默认值,避免报错 value = getattr(crypto, crypto_name, "未知币种") print(f"{crypto_name}的值:{value}")
方法3:初始化时用字典存储值(推荐长期维护)
如果从一开始就把币种值存在类的字典属性里,后续提取、修改都会更方便,扩展性也更强:
class CryptoValues: def __init__(self): self.crypto_map = { "Bitcoin": 50000, "Monero": 150, "Ethereum": 3000 } # 提取值 crypto = CryptoValues() # 单个提取 eth_value = crypto.crypto_map["Ethereum"] # 批量遍历 for name, value in crypto.crypto_map.items(): print(f"{name}: {value}")
这种方式后续要新增币种的话,直接在字典里加键值对就行,不用修改类的属性定义,维护起来省心很多~
内容的提问来源于stack exchange,提问作者shutup1
相关产品推荐
相关产品推荐

