mrC*_*ore 4 python class python-3.x
如果类的构造函数不满足某些条件,是否可以不创建对象?
例如:
class ABC:
def __init__(self, a):
if a > 5:
self.a = a
else:
return None
a = ABC(3)
print(a)
Run Code Online (Sandbox Code Playgroud)
这应该打印None(因为它不应该创建对象但None在这种情况下返回)但当前打印对象...
您可以使用 aclassmethod作为备用构造函数并返回您想要的内容:
class ABC:
def __init__(self, a):
self.a = a
@classmethod
def with_validation(cls, a):
if a > 5:
return cls(a)
return None
a = ABC.with_validation(10)
a
<__main__.ABC at 0x10ceec288>
a = ABC.with_validation(4)
a
type(a)
NoneType
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |