2014-02-28 1 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], ...})은 훨씬 강력하지만, 문자열에서 클래스로 데이터를 이동하는 방법 일 뿐이라면 아마도 불필요 할 것입니다.

관련 문제