【发布时间】:2016-05-13 12:41:58
【问题描述】:
我在嵌套表中有值。我需要做一些计算并得到结果。课程组织在script1.py 和script2.py。
有超类Values,它读取列表中的每一行并将它们转换为numpy数组。
还有子类Dimensions,它从Values继承数组并进行计算。
代码对表格进行操作并获得结果,但不起作用。我收到错误消息:
init() 缺少 1 个必需的位置参数:'tbl'
script1.py:
import numpy as np
class Values:
def __init__(self, tbl):
self.tbl = tbl
def get_val_a(self):
val_a = np.array(self.tbl[0])
return val_a
def get_val_b(self):
val_b = np.array(self.tbl[1])
return val_b
def get_val_c(self):
val_c = np.array(self.tbl[2])
return val_c
script2.py:
from script1 import Values
val = Values()
class Dimensions(Values):
def __init__(self, tbl):
super().__init__(tbl)
def get_dim_a(self):
dim_a = 2 * val.get_val_a()
return dim_a
def get_dim_b(self):
dim_b = 2 * val.get_val_b()
return dim_b
def get_dim_c(self):
dim_c = 2 * val.get_val_c()
return dim_c
script3.py:
from script2 import Dimensions
table = [[1, 2, 3],
[1, 4, 9],
[1, 8, 27]]
dim = Dimensions()
dim_1 = dim.get_dim_a()
dim_2 = dim.get_dim_b()
dim_3 = dim.get_dim_c()
print('Dimensions: ', dim_1, dim_2, dim_3)
【问题讨论】:
-
好吧,当您调用
Dimensions()时,您并没有传入参数,但Dimensions.__init__()显然需要tbl参数。您的意思是改为拨打Dimensions(table)吗? -
你为什么要在
script2.py的模块级别创建val?它不仅不需要(您调用的每个方法都已被Dimensions继承),它还确保您创建的每个Dimensions对象都会污染其他所有Dimensions对象的数据。 -
想一想......这两个类如何帮助你做任何事情,除了减慢你已经创建的numpy数组(一遍又一遍......)?您是否尝试反映这些类之外的某些代码对
table所做的更改? -
谢谢。首先我要说的是我不是程序员,我是结构(土木)工程师,我的编程学习方法主要是反复试验和上网。
-
这个想法就是我在这里所说的“表格”,实际上是一个 csv 文件,其中包含所有符合美国、欧洲等标准的钢截面。此文件包含每个部分的几何特征和其他基本特征。