[英]Make __init__ create other class in python
我创建了自己的类my_class
,该类由两个变量a
和b
初始化。
万一尝试使用a==b
创建my_class
对象,我希望该对象只是type(a)
而不是my_class
。
如何实现呢? 如何修改以下实现?
class myclass:
def __init__(self, a, b):
if a == b:
self = a
else:
myclass.a = a
myclass.b = b
正如其他人在评论中所说,我也不建议这样做。 但是,如果您确实需要这样做,则此代码应该这样做:
class myclass(object):
def __new__(cls, a, b):
if a == b:
return a
else:
instance = super(myclass, cls).__new__(cls)
return instance
def __init__(self, a, b):
self.a = a
self.b = b
您可以对其进行测试:
x = myclass(4, 4)
y = myclass(4, 6)
print(x) #this prints 4
print(y) #this prints <__main__.myclass object at ...>
print(y.a, y.b) #this prints 4 6
事实是__init__
无法返回任何内容,如果您想返回其他内容,则应使用__new__
另请参见: 如何在Python中从__init__返回值?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.