2014-02-28 83 views
0

我寫了一個模塊在python中,我想在其他文件中使用。非常多的,模塊中的函數有3個變量,我想在單獨的文件的代碼中獲得其中的一個變量。該模塊的代碼是:我可以從模塊返回一個變量嗎?

def attrib(): 

    #Code that isnt important to the question 

    global name 
    name = stats[0:x] 

    global strength 
    strength = stats[x+1:x+3] 

    global skill 
    skill = stats[x+4:x+6] 

,並在文件中,我想在不同功能的三個變量分離出來,這樣我可以將它們分配到兩個不同的角色,就像這樣:

import myModule 

def nam(): 
    return (name from the module) 

def sth(): 
    return (strength from the module) 

def skl(): 
    return (skill from the module) 

char_1_nam = nam() 
char_1_sth = sth() 
char_1_skl = skl() 

首先,這是甚至可能的,其次,我該如何做到這一點?

感謝提前:)

+1

聽起來就像您使用了錯誤的數據結構。考慮一個'class'而不是一個函數。 –

回答

0

根據我的意見,試試這個來代替:

# FILENAME: attributes.py 

class Attributes(object): 
    def __init__(self,stats): 
     # I don't know how you formed x in your example but... 
     self.name = stats[0:x] 
     self.strength = stats[x+1:x+3] 
     self.skill = stats[x+4:x+6] 

# FILENAME: main.py 

from attributes import Attributes 

atts = Attributes(stats) # wherever they come from 
# atts.name = your name 
# atts.strenght = your strength 
# atts.skill = your skill 

不幸的是,你還沒有列入(可能不應該包含,因爲它可能是很長)的其餘的代碼,所以很難給你更多的指導,而不是尋找面向對象的編程來解決問題。總的來說,我建議程序員做這樣的事情:

class Character(object): 
    def __init__(self,any,atts,you,might,need): 
     self.any = any 
     self.atts = atts 
     # etc ... 

它看起來像你拉你的統計那種做作的開始與方式 - 嘗試使用元組來保存不同的數據結構,而不是從一個字符串抓住它按指數。閱讀速度更快,更容易閱讀。即使您必須執行stats = (stats[0:x], stats[x+1:x+3], stats[x+4:x+6]),您仍然可以從現在開始將它們稱爲stats[0],stats[1]stats[2]。字典(statsdict = {'name': stats[0:x], ...})更加健壯,但如果這只是將數據從字符串轉移到類中的一種方式,則可能不必要。

相關問題