在过去的几个小时里我一直在试图解决这个问题,但我即将放弃。
如何确保在 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(使用前将#替换为@)