[英]Importing Module, Function, Instance
我一直在運行一些測試來學習導入的工作原理:
文件 1:
class Player():
hp=0
def __init__(self):
self.hp=0
zim = Player()
zim.hp = 5
文件2:
import test1
print(test1.zim.hp)
我運行 file2: 並得到 5 的輸出。(勝利的波浪旗)
Soooo,然后我將 file1 更改為:
def Test():
class Player():
hp=0
def __init__(self):
self.hp=0
zim = Player()
zim.hp = 5
我一直在嘗試修改 file2 中的代碼以獲得 5 的輸出,但它失敗了。 有沒有辦法導入一個函數然后實例化特定的數據(在這個例子中是 hp)? 我知道“返回”,但想知道是否有辦法修改以下代碼以直接導入我需要的實例。
即:abc 將是......? 哦
import test1
print(abc.test1.zim.hp)
~T
要回答您的問題“我想知道是否可以修改以下代碼以直接導入我需要的實例”:否。
正如你不能進入一個函數並在一個模塊中獲取它的內部工作一樣,你也不能在導入中這樣做。
該函數定義了Player
是什么,實例化了它,並調用了它的一個屬性。 然后函數結束,程序不知道Player
是什么,更不用說zim
是什么,它的hp
屬性是什么!
在您的test1
您有:
class Player():
hp=0
def __init__(self):
self.hp=0
zim = Player()
zim.hp = 5
這將拋出NameError: name 'Player' is not defined
因為您正在創建Player
的實例,而它的類定義尚未結束。 我認為你打算這樣做:
class Player():
hp=0
def __init__(self):
self.hp=0
zim = Player() # This and the next line are indented differently
zim.hp = 5
在這種情況下zim
成為test1
的模塊變量,因此可以從test2
打印zim.hp
現在,在您將test1
編輯為:
def Test():
class Player():
hp=0
def __init__(self):
self.hp=0
zim = Player()
zim.hp = 5
Player
對象實例化在它的類聲明之外,所以它是正確的。 但是變量zim
只存在於函數Test()
。 當您從另一個模塊打印zim.hp
, zim
不作為要從test2
訪問的模塊變量存在。
也許你可以從Test()
方法return zim.hp
。 如果你這樣做,你可以從test2
訪問值作為print(test1.Test())
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.