如何在Python类函数中隐式传递参数

时间:2016-10-09 04:41:31

标签: python function class

我正在写一个python类和相关的函数。假设以下是一个具有函数的类,该函数将数字列表的所有值相加并返回总和

 alist = [2,3,7,4,7]
 MyClasss(object):
    def __init__(self):
        print("Roses are red")
    def add_list(self,thelist):
         j = 0
         for i in the list:
             j = j+i
    return j 

  a = MyClasss()
  print("sum is ",a.add_list(alist))

上面的查询将返回列表的总和就好了。

我的问题是: 是否有可能编写此查询或创建一个数据对象,我们不必在括号中传递数据对象而是将其写为类似

 alist.add_list()

并获得相同的结果。就像我们看到不同的功能可用于不同的数据类型。 任何有关这方面的见解将受到高度赞赏。谢谢

1 个答案:

答案 0 :(得分:4)

您可以在构造

上将其添加到__init__
class MyClasss(object):
    def __init__(self, theList):
        self.theList = theList
    def add_list(self):
        return sum(self.theList)

>>> a = MyClasss([2,3,7,4,7])
>>> print("sum is ", a.add_list())
23
>>> print("sum is ", a.add_list())
23

另一种方法是从functools.partial创建一个部分函数并调用:

>>> import functools as ft
>>> a = MyClasss()
>>> a.add_list = ft.partial(a.add_list, [2,3,7,4,7])
>>> a.add_list()
23