如何向类

时间:2017-04-26 05:25:37

标签: python class design-patterns theano class-design

我正在编写一个类,它需要表现得好像它是另一个类的实例,但还有其他方法和属性。我在__new__内尝试过不同的事情,但无济于事。例如,这是一个半写的类和所需的行为:

class A(object):
    def __new__(self, a):
        value = 100  # instances of A need to behave like integers
        ...          # bind A methods and attributes to value?
        return value

    def __init__(self, a)
        self.a = a

    def something(self):
        return 20 + self.a

这是理想的行为:

a = A(10, 5)
print(a + 10)         # 110
print(a * 2)          # 200
print(a.b)            # 5
print(a.something())  # 25

我知道当__new__返回不同于A的类的实例时,__init__和其他方法不会绑定到value。其他方法都不是。这种事情有可能吗?我是否以错误的方式思考这个问题?

修改

请注意,此类不会返回整数实例,仅用于示例目的。

之所以(我认为)我不能只是子类,在本例中是int,是因为我需要在调用它时构造类。 __init__没有返回任何内容,否则,我可以做类似的事情:

class A(object):
    def __init__(self, a):
        self.a = a
        ...           # logic constructing `value`
        value = 100   # `value` ends up being an integer
        return value

    def something(self):
        return self.a

如果这是相关的,value是theano TensorVariable。我想为创建供下游其他功能使用的TensorVariable实例添加额外的方法和属性。

0 个答案:

没有答案