Python创建类时如何指定__init__方法传入参数的具体类型
解决方案
Python为动态类型语言,语法层没有原生的参数类型强制校验规则,但你可以手动在__init__方法中添加校验逻辑,类型不匹配时主动抛出TypeError即可。另外注意你写的类中存在方法名ligne_225和实例属性重名的问题,会导致调用冲突,需要修改方法名避免覆盖。
无依赖手动校验实现(推荐)
import pandas as pd class Poste_HTB_HTA: def __init__(self, ligne_225, data): # 校验ligne_225类型 if not isinstance(ligne_225, list): raise TypeError(f"参数ligne_225要求为list类型,当前传入类型为{type(ligne_225).__name__}") # 校验data类型 if not isinstance(data, pd.DataFrame): raise TypeError(f"参数data要求为pandas DataFrame类型,当前传入类型为{type(data).__name__}") self.ligne_225 = ligne_225 self.data = data # 修改方法名避免和属性重名 def get_ligne_225(self): return self.ligne_225
其他可选方案
- 如果你只需要静态类型提示(用于IDE提醒、mypy静态检查,运行时不会抛出错误),可以直接加类型注解即可:
from typing import List import pandas as pd class Poste_HTB_HTA: def __init__(self, ligne_225: List, data: pd.DataFrame): self.ligne_225 = ligne_225 self.data = data
- 如果需要更简洁的运行时校验能力,可以引入pydantic库实现自动类型校验,无需手动写判断逻辑。
内容的提问来源于stack exchange,提问作者Thomas LESIEUR
相关产品推荐
相关产品推荐

