我是Python的新手,我正努力在自定义类中导入外部模块/包。我没有找到答案(可能是因为我使用的术语不好),所以我在这里发布。从根本上讲,这是一个涉及Python全局理解的新手问题。
我有以下课程:
class MyCustomClass:
import openpyxl as xl
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import time
def __init__(self, file_path):
self.file = xl.load_workbook(file_path)
def some_method(self):
start = time.time()
process.extractOne(#calling args)
当我使用此类结构创建实例时,出现了NameError:name'xl'not defined''
使用self.xl
和self.time时,它可以正常工作。这是我的问题:
1)在我的课程中导入模块或软件包的好方法是什么?
2)我可以避免使它们成为实例变量吗?
谢谢你的帮助,
在类定义中包含导入将使这些名称可用作类成员:
>>> class Example:
import time
>>> Example.time
<module 'time' (built-in)>
因此,为了从内部访问这些导入,您必须使用将它们称为类成员MyCustomClass.xl.load_workbook
。
但总的来说,不建议这样做。这些导入不属于类本身,它们是类的依赖项,但是没有理由将这些依赖项公开为类成员。相反,你应该只导入这些名字以外的类定义的:
import openpyxl as xl
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import time
class MyCustomClass:
def __init__(self, file_path):
self.file = xl.load_workbook(file_path)
def some_method(self):
start = time.time()
process.extractOne(some_args)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句