如何在不同的模块/类中使用模块/类函数/方法,而无需导入模块/类或了解python中的文件体系结构?

093gszye  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(393)

我是一名中级python程序员,但有一件事困扰了我一段时间。我正试图统一代码,使其可被许多项目重用。我面临的问题是如何通过某个类(或过程代码)访问函数(或方法),而不导入模块/类。我希望我的代码不知道是否存在其他文件/模块。这里有一个例子。
假设我的项目有以下文件体系结构(该体系结构将被其他项目重用,但略有变化):
主文件夹
main.py
folder1>module1>func1
folder2>module2>func2(func2调用func1,假设func1是一个常见的数学运算,类似于查找点是否位于公差范围内的平面上)
现在,在main.py中,我导入了module1和module2
假设main.py中有一个函数调用func2


## In main.py

def call_func1():
    module2.func2()

## In module1.py

def is_point_on_plane():
    print("testing")

## In module2.py

def func2():
    is_point_on_plane() ## This is a function that is currently in module1

现在,我不想让module1或module2知道任何关于彼此的信息,甚至不想知道对方的存在。我尽量避免进口。
我解决这个问题的方法是将平面上的is point作为参数传递给main.py中的func2

def call_func1():
    fcToCall = module1.is_point_on_plane
    module2.func2(fcToCall)

## In module1

def is_point_on_plane():
    print("testing")

## In module2

def func2(fcToCall):
    fcToCall()

我相信有更好的方法可以做到这一点。一种更像Python的方式。在任何情况下,我都需要module1和module2完全独立并避免任何导入。

7z5jn7bk

7z5jn7bk1#

您可以导入所需项目的文件名,例如:“如果我希望使用名为‘main.py’的文件的另一个def函数,那么我将编写

import main
main.call_func1()

相关问题