繁体   English   中英

使__init__在python中创建其他类

[英]Make __init__ create other class in python

我创建了自己的类my_class ,该类由两个变量ab初始化。

万一尝试使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM