从另一个类中调用python函数

时间:2016-06-16 22:29:34

标签: python

我是Python的新手,我在功能基础方面遇到了困难

a.py

import b
from ConfigParser import SafeConfigParser

class A:
  def method1():
    config = SafeConfigParser()
    b = B()
    b.method2(config)

b.py

class B:
  def method2(config)
    config.
    # The editor does not show the inbuilt methods of config here

我正在使用IntelliJ IDE

3 个答案:

答案 0 :(得分:1)

import不是#include。它会自动将所有内容命名为导入的名称。你的第一个例子应该是这样的

import b
from ConfigParser import SafeConfigParser

class A:
  def method1:
    config = SafeConfigParser()
    c = b.B()
    c.method2(config)

注意我必须b.B()来获取B类,因为它被命名为b,即导入的模块。

Python不是静态类型的。您可以将任何对象传递到B.method2()。您希望编辑器自动完成SafeConfigParser对象,因为这是您在A中传递给它的内容,但这只是一个实例。 Python(和您的编辑器)无法知道您可以传递给method2()的所有可能类型的参数(除非您使用的是类型提示,这是一个相当新的功能,并且仍然不会强制执行变量类型,它只是在编辑器中用于显示目的。)

答案 1 :(得分:0)

有两个可能的原因:

  1. 提示没有显示,因为此代码有拼写错误,无论如何都不会运行。您在var routeDefaults = new {controller = "Home", action = "Index", area = AreaName, id = UrlParameter.Optional}; 之后错过了(),在method1之后错过了冒号。此外,method2(config)课程也不会自动显示,您应在B文件中将其称为b.B

  2. 您的编辑器并未猜测所有可能的程序流程。例如,您可以使用字符串或整数或其他任何内容作为参数从其他位置调用a.py。编辑只是在这里猜测,所以它可能不会给你任何提示。

  3. 不说编辑是什么,很难说真正的原因是什么。首先修复代码,然后查找具体的答案。

    如果您正在使用python> 3.5,那么你可以使用类型提示,这也可能有所帮助。 (https://www.python.org/dev/peps/pep-0484/

答案 2 :(得分:0)

您可以使用dir() function in python3创建类似于您所需的内容。这将打印变量范围内的所有内容。只需将b.py文件更改为:

即可
class B:
  def method2(config)
    print(dir(config))