2016-12-26 1 views
0

메리 크리스마스!하위 정의에서 클래스의 속성을 요청할 수 있습니까?

사용자가 제공 한 정보를 사용하여 일종의 데이터베이스를 만드는 코드를 생성하려고했습니다. input() 메서드를 사용하여 인스턴스 변수를 정의 할 수 있습니까?

class Compound: 
def __init__(self, name, state, molecular_mass, concentration, concentration_measure): 
    self.nome = name 
    self.state = state 
    self.mol_mass = molecular_mass 
    self.conc = concentration 
    self.measure = concentration_measure 

def summary(self): 
    return ('Your compound is {} it has a state of {} it has a molecular mass of {} g/mol and a concentration of {} and a measure of {}' 
      .format(self.name, self.state, self.mol_mass, self.conc, self.measure)) 

def ask_compounds(): 
    self.nome = input("Name?") 
    self.state = input('Solid or Liquid') 
    self.mas_mol = input('Absolute number for molecular weight?') 
    self.conc = input('Concentration?') 
    self.measure = str(input('In M? In g/ml?')) 

ask_compounds() 

감사합니다.

답변

2

물론 가능합니다. 여담으로

class Compound: 
    def __init__(self, name, state, molecular_mass, concentration, concentration_measure): 
     # snipped for brevity 

    def summary(self): 
     # snipped for brevity 

    @classmethod 
    def ask_compounds(cls): 
     nome = input("Name?") 
     state = input('Solid or Liquid') 
     mas_mol = input('Absolute number for molecular weight?') 
     conc = input('Concentration?') 
     measure = input('In M? In g/ml?') 
     return cls(nome, state, mas_mol, conc, measure) 

inst = Compound.ask_compounds() 

, 사용중인 : 더 나은, ask_compounds 당신을 위해 인스턴스를 생성하는 classmethod가 확인

def ask_compounds(): 
    nome = input("Name?") 
    state = input('Solid or Liquid') 
    mas_mol = input('Absolute number for molecular weight?') 
    conc = input('Concentration?') 
    measure = input('In M? In g/ml?') 
    return nome, state, mas_mol, conc, measure 

inst = Compound(*ask_compounds()) 

또는 : 어느 return 입력 된 값은 그들과 함께 Compound 클래스를 초기화 nome__init__이고 ask_components이면서 namesummary 인 경우 두 개 중 하나를 다른 것으로 변경하십시오.

관련 문제