我是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
答案 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)
有两个可能的原因:
提示没有显示,因为此代码有拼写错误,无论如何都不会运行。您在var routeDefaults = new {controller = "Home", action = "Index", area = AreaName, id = UrlParameter.Optional};
之后错过了()
,在method1
之后错过了冒号。此外,method2(config)
课程也不会自动显示,您应在B
文件中将其称为b.B
。
您的编辑器并未猜测所有可能的程序流程。例如,您可以使用字符串或整数或其他任何内容作为参数从其他位置调用a.py
。编辑只是在这里猜测,所以它可能不会给你任何提示。
不说编辑是什么,很难说真正的原因是什么。首先修复代码,然后查找具体的答案。
如果您正在使用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))