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
方法,该对象本身就是参数之一?
答案 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