亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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條經驗 獲得超13個贊

這是導入和使用類的正確方法:


from lib.MyToken import TokenMgr

manager = TokenMgr()

manager.create(private_key,'[email protected]')

請注意第二行,我們在其中創建了該類的一個實例。


查看完整回答
反對 回復 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 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號