如果参数存储在调用方法的对象中,如何处理方法参数?

时间:2017-11-25 18:16:40

标签: python

 Class Triple():

     def multiply(self, num1, num2, num3):
         return num1*num2*num3

如果我跑了类似的东西:

mytriple = Triple()
print(mytriple.multiply(1,2,3))

我得到6,这很好。

然而如果我的对象本身就是其中一个参数?

a = 3
print(a.multiply(2,3)) # Want it to print (3*2*3) = 18

我显然得到一个错误,因为3是一个int,没有我调用的方法。

有没有办法我仍然可以在一个对象上调用multiply方法,该对象本身就是参数之一?

2 个答案:

答案 0 :(得分:1)

如果你想将一个Triple实例与一个值相关联(我不知道你究竟想要做什么,这一切似乎都是一个人为的例子) - 你当然可以。

class Triple():
    def __init__(self, value):
        self.value = value

    def multiply(self, num1, num2):
         return self.value*num1*num2

mytriple = Triple(3)
print mytriple.multiply(2,3) # 18

答案 1 :(得分:1)

您也可以继承int

class A(int):
    def multiply(self, *args):
        r = self
        for arg in args:
            r *= arg
        return r

>>> x = A(3)
>>> x.multiply(4,5)
60
>>> x.multiply(2,3,4)
72

在其他情况下,这也会像int一样:

>>> x + 5
8
>>> x * 5
15