属性错误:“TrainType”对象没有属性“v”;属性应该具有类的外部访问权限

2024-09-28 20:53:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我不久前就开始学习Python并加入了,现在我第一次尝试学习Python类。我遇到了一个无法解决较长时间的问题,并出现错误:

AttributeError: 'TrainType' object has no attribute 'v'

代码如下:

import math

class TrainType(object):
    def __init__(self,t,M,n,L,S,pas):
        self.t = t              # train model
        self.M = M              # train mass [t]
        self.n = n              # numer of axles [-]
        self.L = L              # train length [m]
        self.S = S              # crossection area [m2]
        self.pas = pas          # passenger capacity [-]

# Running resistance force formula
def run_res(self,v):
    C = 0.0035*self.S+0.041*self.L/100+0.002;
    R_L = 9.81*(1.3*math.sqrt(10*self.n/self.M)+0.01*self.v)*self.M+C*v**2
    return R_L

# Power required formula
def power(self,v):
    a = self.run_res(v)
    P = a*v
    return P

train1 = TrainType("Talgo 350",323,21,200,10,318)

print(train1.run_res(10))       # for test reasons v = 10
print(train1.power(10))

v是一个外部变量,它是class TrainType方法中的一个参数

我搜索了这么多,发现解决方案与全局变量相关的线程很少,所以我尝试通过global vglobals()['v']解决它,但没有帮助:

SyntaxError: name 'v' is parameter and global.

提前谢谢


Tags: runselfreturnobjectdeftrainresmath