python类创建默认参数_python – 使用argparse对默认参数进行自定义类型或操作

我想转换我以其他格式传递给argparse的参数;我们的想法是传递一个数字(通常是一个浮点数)并将其转换为字符串(通常为浮点数的Fortran表示法).

首先,我尝试创建自定义类型

def FortranFloat(value):

vfloat = float(value)

vfloat = str(vfloat) + "d0"

return vfloat

parser = argparse.ArgumentParser()

parser.add_argument("--xmin=", dest="xmin", type=FortranFloat, default=-2.0)

args = parser.parse_args()

它运作良好…如果我实际给出–xmin =参数.否则,它只保持-2.0,而不是按照我的意愿将其转换为-2.0d0.因此我认为可以更容易地给出我想要的格式的默认值,所以用’2.0d0’替换2.0 …有趣的是它被评估,因为它崩溃并引发以下错误

argparse.ArgumentError: argument --xmin=: invalid FortranFloat value: '-2.0d0'

为了解决这个问题,我尝试创建自定义操作

class FortranConverter(argparse.Action):

def __call__(self, parser, namespace, values, option_strings=None):

if type(values) is float:

values = str(values) + "d0"

setattr(args, self.dest, values)

parser = argparse.ArgumentParser()

parser.add_argument("--xmin=", dest="xmin", type=float, default=-2.0, action=FortranConverter)

args = parser.parse_args()

那也行不通.它似乎甚至没有通过我的行动(如果我在__call__中打印一些东西,它将忽略它).

任何想法,想法或解释将不胜感激!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值