Python 检查 __init__ 参数

2024-05-01

在过去的几个小时里我一直在试图解决这个问题,但我即将放弃。

如何确保在 python 中只有匹配的特定条件才会创建对象?

例如,假设我想创建一个对象 Hand,并且仅当初始化程序中有足够的 Fingers 时才初始化 Hand? (请以此作为类比)

Say,

class Hand:
  def __init__(self, fingers):
    # make sure len(fingers)==5, and 
    #only thumb, index, middle, ring, pinky are allowed in fingers
    pass

Thanks.

这些是我发现的最接近的问题,但一个是 C++ 的,另一个没有回答我的问题。

检查构造函数参数 https://stackoverflow.com/questions/7361077/checking-of-constructor-parameter

如何根据参数类型重载 __init__ 方法? https://stackoverflow.com/questions/141545/overloading-init-in-python


你必须定义__new__为了那个原因:

class Foo(object):
    def __new__(cls, arg):
        if arg > 10: #error!
            return None 
        return super(Foo, cls).__new__(cls)

print Foo(1)    # <__main__.Foo object at 0x10c903410>
print Foo(100)  # None

也就是说,使用__init__对无效参数引发异常通常要好得多:

class Foo(object):
    def __init__(self, arg):
        if arg > 10: #error!
            raise ValueError("invalid argument!") 
        # do stuff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 检查 __init__ 参数 的相关文章

随机推荐