【问题标题】:can i list methods in python?我可以列出python中的方法吗?
【发布时间】:2014-03-27 09:42:22
【问题描述】:

我所拥有的是一个类的每个实例都有一个不同的方法。所以我想要的是当我为该类创建一个新实例时能够以某种方式选择该实例将调用的方法。我是一个完整的新手python,我想知道我是否可以有一个方法列表和每个实例来从这个列表中调用一个特定的。这甚至可能吗?

我做了一些搜索,找到了http://docs.python.org/2/library/inspect.html(检查模块),但我很困惑。

【问题讨论】:

  • 为什么不利用继承?最好包含一个您正在尝试做的最小示例,以便我们提供更好的答案。
  • 我有一个名为 device 的类,对于我添加到代码中的每个新设备,我都有一个不同的方法来计算成本,我想要的是当我添加设备以添加其方法并添加到然后可以从课堂上调用它。我希望每个实例调用不同的方法

标签: python list methods


【解决方案1】:

在 python 中,函数是第一类对象。因此,您可以直接将函数作为参数传递。如果你定义了函数f(x), g(x), h(x),你可以创建一个类方法

def set_function(self, external_function):
    self.F = external_function

然后您可以使用 object.F(x),就好像它已在类中定义一样。

但是,属于同一类的对象具有不同的方法是糟糕的设计。如果同一类的对象具有不同的行为,那么它们可能一开始就应该属于不同的类。更好的方法是对原始类进行子类化,在子类中定义不同的函数,然后实例化相应的对象。

【讨论】:

  • 好的,非常感谢!!!我会尝试使用子类。正如我所说,我是 python 和 oop 的新手,我仍然像 C 一样写,:)
  • 在这种情况下,与其专注于 python,不如阅读一些面向对象设计的概念。可能会在与 python 并行的不同语言中看到它们,以将这些想法与它们在每种语言中实现的方式区分开来。我建议看一下《thinking in java》这本书(你可以在网上找到它),并阅读与对象、接口和多态相关的章节,其中对主要概念有非常清晰的介绍。之后,尝试阅读一些基本的设计模式。
猜你喜欢
  • 2017-08-02
  • 1970-01-01
  • 2013-01-03
  • 2012-06-03
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
相关资源
最近更新 更多