Python-“ AttributeError:'str'对象没有属性'Tc'(Tc是参数之一)[关闭]

Posted

技术标签:

【中文标题】Python-“ AttributeError:\'str\'对象没有属性\'Tc\'(Tc是参数之一)[关闭]【英文标题】:Python - " AttributeError: 'str' object has no attribute 'Tc' (Tc is one of the arguments) [closed]Python-“ AttributeError:'str'对象没有属性'Tc'(Tc是参数之一)[关闭] 【发布时间】:2016-10-29 18:25:22 【问题描述】:

我有这个代码:

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 时:

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

这部分有错误信息:“AttributeError: 'str' object has no attribute 'Tc'”:

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

而且我猜它对于其他参数(Pc 和 omega)也会有同样的错误。这个错误是什么意思?

【问题讨论】:

您的代码缩进太严重,无法正确推断其功能 - '恐怕您至少必须修复它,以便它在编译时不会出现语法错误......例如 preos() 函数的主体, 根本不缩进。 “有问题”不是有效结果。您对这段代码有什么期望,它实际上在做什么?请准确描述您的描述,因为我们都在远程调试,我们无法读懂您的想法、查看您的屏幕或访问您的数据。 "methane" 是一个字符串,而不是 Molecule 【参考方案1】:

在这里:

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

您显然将“甲烷”作为字符串传递给 preos 函数,然后尝试在该字符串上调用 .Tc。错误就是这样说的。这与 IPython 没有任何关系。换句话说,您正在尝试运行"methane".Tc

编辑:很难说你真正想要发生什么,但我认为你并没有完全了解类和方法。

【讨论】:

以上是关于Python-“ AttributeError:'str'对象没有属性'Tc'(Tc是参数之一)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python:AttributeError:'str'对象没有属性'datetime'

Python类继承:AttributeError:'[SubClass]'对象没有属性'xxx'

为啥python中会出现这个AttributeError?

Python 错误:AttributeError:“模块”对象没有属性“heappush”

Python-“ AttributeError:'str'对象没有属性'Tc'(Tc是参数之一)[关闭]

AttributeError:模块'tensorflow'在更新后没有属性'python'错误