如何在类中的方法中添加方法?

时间:2017-02-24 04:53:26

标签: python python-3.x

假设我有以下课程:

import webbrowser

class Management(object):

  def add_accounts(self, data):
    operations = []
    for account_name in data:
      operations.append(
        {'operator': 'ADD',
         'operand': {'name': account_name}
         })
    self.added = operations

manager = Management()
manager.add_accounts(['name 1', 'name 2'])

我想要做的是添加此功能:

def source():
  url = r'http://www.stackoverflow.com/some-help-doc'
  webbrowser.open(url, new=1)

add_accounts方法,以便输入以下内容:

manager.add_accounts.source()

让它打开我的默认浏览器到在线帮助文​​章:

我一直在寻找如何将方法添加到类中已有的方法中。我正在尝试做什么名称?

2 个答案:

答案 0 :(得分:0)

正如@BrenBam在评论中指出的那样,方法确实有属性,那些可以是任何东西,包括函数。然而,这将使一些奇怪的非Pythonic代码。如果您希望此方法显示某种文档(如示例所示),那么将信息复制到文档字符串会更好。 Docstring是每个人都希望信息的地方。

答案 1 :(得分:0)

这似乎是目前最好的选择:

import webbrowser

class Management(object):

  def __init__(self):
    Management.add_accounts.source = lambda url='https://github.com/': webbrowser.open(url, new=1)

  def add_accounts(self, data):
    operations = []
    for account_name in data:
      operations.append(
        {'operator': 'ADD',
         'operand': {'name': account_name}
         })
    self.added = operations

manager = Management()