如何定义一个函数,以便可以在对象上调用它?

时间:2017-09-06 16:38:51

标签: python python-3.x list function methods

我想制作一个这样的函数定义:

def x(a, b):
    #do stuff

但是以这种方式让它可以调用:

num1=1
num2=2
num1.x(num2)

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:3)

不,你想要的只能通过Python中的方法来实现。它不像C ++,你可以在课堂外定义“非成员”方法(我不确定这是否是这些的名称,但我希望你知道我的意思)。

Pythons整数(还有浮点数,字符串等)也不支持新的属性/方法,所以实现这一点的唯一方法是实际上对类进行子类化或创建一个新类:

class MyClass(object):  # a custom class
    def __init__(self, val):
        self.val = val

    def x(self, other):
        return self.__class__(self.val + other.val)

    def __repr__(self):
        return '{self.__class__.__name__}({self.val})'.format(self=self)

>>> n1 = MyClass(1)
>>> n2 = MyClass(2)
>>> n1.x(n2)
MyClass(3)

答案 1 :(得分:0)

你不能这样做添加方法。你也可以使用下面的一个:

def x(a, b):
    num = a + b
    return num
x = x(1,2)
print(x)

答案 2 :(得分:0)

为什么不使用类,在类中定义一个名为add的方法 一个简单的实现:

>>> class integer(int):
...     def __init__(self,n) :
...             self.num = n
...     def add(self,m) :
...             return self.num+m
...
>>> num1 = 1
>>> num2 = 2
>>> num1 + num2
3
>>> num1 = integer(num1)
>>> num1.add(num2)
3