为了账号安全,请及时绑定邮箱和手机立即绑定

python - 如何从另一个文件中的类正确导入方法

python - 如何从另一个文件中的类正确导入方法

桃花长相依 2023-05-09 09:50:43
Python新手在这里。我在尝试导入和/或使用我创建的类中的方法时遇到问题,我为其创建了“/lib”目录。这是我当前的文件树:/tokenmgt         /lib/myToken.py从目录:/tokenmgt我从这个目录中的命令行运行 python。我想使用我的类“TokenMgr”中定义的“创建”方法:class TokenMgr():    """Model a Token Manager"""    def __init__(self):        pass        def create(self, privkey, email):        """<REST OF CODE HERE>"""  我收到这些错误:Type "help", "copyright", "credits" or "license" for more information.>>> import lib.myToken>>> from lib.myToken import createTraceback (most recent call last):  File "<stdin>", line 1, in <module>ImportError: cannot import name 'create' from 'lib.myToken' (C:\Users\FOO\Desktop\MyWork\dev\lib\myToken.py)我是否还需要导入类名(.py 脚本中定义的“TokenMgr”?我很困惑如何正确执行此操作。谢谢
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超12个赞

这是导入和使用类的正确方法:


from lib.MyToken import TokenMgr

manager = TokenMgr()

manager.create(private_key,'foo@gmail.com')

请注意第二行,我们在其中创建了该类的一个实例。


查看完整回答
反对 回复 2023-05-09
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

create 方法只能通过对象访问。所以你应该导入你的类,创建一个实例然后执行 instance.create().. 如果你觉得创建不应该绑定到任何对象你可以使用@classmethod 装饰它,这样你就可以在没有对象的情况下访问..

这里有一些基础知识。Python 类可以具有三种类型的例程。

  1. 实例方法 -> 这些方法与一个对象相关联,它们接收 self 作为第一个参数,即对象

  2. 类方法 -> 对类的所有对象都是通用的,这些方法的第一个参数是 cls 而不是 self

  3. 静态方法 -> 它们也绑定到一个类,但它们既不接收类也不接收对象实例作为它们的第一个参数。这与在类定义之外拥有独立函数一样好。

2 和 3 分别使用 @classmethod 和 @staticmethod 装饰器实现,如下所示:

在 [6] 中:B.create(10) 在静态创建方法中..


In [7]: class A:

   ...:     @classmethod

   ...:     def create(cls,x):

   ...:         print("In create method with args {},{}".format(cls, x))

   ...:

   ...:


In [8]: A.create(10)

In create method with args <class '__main__.A'>,10



In [4]: class B:

   ...:     @staticmethod

   ...:     def create(x):

   ...:         print("In static create method..")

   ...:


In [6]: B.create(10)

In static create method..

在您的情况下,您可以根据需要使用它们中的任何一个,或者创建 TokenManager 类的对象,然后调用如下所示的创建方法:


tokenManager_obj = TokenManager()

tokenManager_obj.create()


查看完整回答
反对 回复 2023-05-09
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信