Jupyter中如何让四元数类接收元组而非列表作为初始化参数?
解决四元数类支持元组传入的问题
可以分两种场景处理你的需求:
场景1:同时支持列表和元组传入(无需修改现有代码)
你当前的代码其实已经支持直接传入元组,因为元组和列表一样是可迭代对象,且支持len()方法。直接用以下方式调用即可:
Quaternion((1, 2, 3, 4))
运行效果和传入列表完全一致。
场景2:强制要求必须传入元组(拒绝列表等其他类型)
如果希望严格限制只能传入元组,需要在初始化方法中增加类型检查逻辑,修改后的代码如下:
class Quaternion(object): def __init__(self, elements): if not isinstance(elements, tuple): raise TypeError("Quaternion init vector must be a tuple.") if len(elements) != 4: raise ValueError("Quaternion init vector must be of length 4.") self.elements = elements
这样当传入列表时会直接抛出TypeError,只有传入元组才能完成初始化。
内容的提问来源于stack exchange,提问作者mmm
相关产品推荐
相关产品推荐

