2016-06-27 3 views
-6

(TC는 인수 중 하나입니다) : 내가 원하는 인수 함수 preos를 호출 할 때파이썬 - "AttributeError : 'STR'개체가 어떤 속성이없는 'TC'이 코드가

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.optimize import newton 

R = 8.314e-5 # universal gas constant, m3-bar/K-mol 
class Molecule: 
""" 
Store molecule info here 
""" 
def __init__(self, name, Tc, Pc, omega): 
    """ 
    Pass parameters desribing molecules 
    """ 
    #! name 
    self.name = methane 
    #! Critical temperature (K) 
    self.Tc = -83+273 
    #! Critical pressure (bar) 
    self.Pc = 45.99 
    #! Accentric factor 
    self.omega = 0.011 

def preos(molecule, T, P, plotcubic=True, printresults=True): 
    Tr = T/molecule.Tc # reduced temperature 
    a = 0.457235 * R**2 * molecule.Tc**2/molecule.Pc 
    b = 0.0777961 * R * molecule.Tc/molecule.Pc 
    kappa = 0.37464 + 1.54226 * molecule.omega - 0.26992 * molecule.omega**2 
    alpha = (1 + kappa * (1 - np.sqrt(Tr)))**2 

    A = a * alpha * P/R**2/T**2 
    B = b * P/R/T 

를 :

preos("methane", 160, 10, "true", "true") 

오류 메시지가 있습니다 : "AttributeError는 'STR'개체가 어떤 속성 'TC'를이 없다"

def preos(molecule, T, P, plotcubic=True, printresults=True): 
    Tr = T/molecule.Tc # reduced temperature 

을 그리고 GUE이 부분에 그것은 다른 인수 (Pc와 오메가)에 대해 동일한 오류를 갖게 될 것입니다. 이 오류는 무엇을 의미합니까?

+2

코드가 제대로 기능을 추론하기에는 너무 심하게 들여 쓰기가 쉽습니다. '구문 상 오류없이 컴파일되도록 최소한 수정해야합니다. 예를 들어'preos()'함수의 본문은 isn' 들여 쓰기가 전혀 없습니다. – holdenweb

+1

"문제가 있음"은 유효한 결과가 아닙니다. 이 코드의 결과로 기대되는 것은 무엇이며 실제로 무엇을하고 있습니까? 설명이 정확해야합니다. 왜냐하면 우리는 모두 원격으로 디버깅을하고 있기 때문에 마음을 읽거나 화면을 보거나 데이터에 액세스 할 수 없기 때문입니다. –

+0

''methane "'은 문자열이며'분자 '는 아닙니다. – user2357112

답변

0

은 여기 : 당신은 분명 그 문자열에 .Tc를 호출하려고 문자열로 preos 함수에 "메탄을"전달하는

def preos(molecule, T, P, plotcubic=True, printresults=True): 
    Tr = T/molecule.Tc # reduced temperature 
... 
preos("methane", 160, 10, "true", "true") 

. 그 오류는 정확하게 말하는 것입니다. 이것은 IPython과 관련이 없습니다. 즉, "methane".Tc을 실행하려고합니다.

편집 : 실제로 어떤 일이 일어나길 원하는지 알기는 어렵지만 클래스와 메소드를 꽤 많이 얻지는 못했습니다.

관련 문제