我尝试为新功能set_sigma_s
指定第三个键,就像我为具有两个键的set_sigma_s
一样。一切都是一样的,但这次我得到了一个
TypeError:set_sigma_s()只需5个参数(给定4个)。
我的代码如下:
from tabulate import tabulate
class Material():
def __init__(self, num_mat, num_groups):
self.num_mat = num_mat
self.num_groups = num_groups
self.map = {}
def sigma_t(self, key1, key2):
return self.map[key1, key2]
def set_sigma_t(self, key1, key2, v):
self.map[key1, key2] = v
def sigma_s(self, key1, key2, key3):
return self.map[key1, key2, key3]
def set_sigma_s(self, key1, key2, key3, v):
self.map[key1, key2, key3] = v
def display(self):
table = [["Number of Materials:", len(num_mat), None],["Number of Groups:", len(num_groups), None],
["Material",num_mat[0], None],["gp",num_groups[0],num_groups[1]],["Total",mat.sigma_t(0, 0), mat.sigma_t(0, 1)],
["0<-gp",mat.set_sigma_s(0, 0, 0),mat.set_sigma_s(0, 0, 1)],["1<-gp",mat.set_sigma_s(0, 1, 0),mat.set_sigma_s(0, 1, 1)]]
return tabulate(table, tablefmt="rst")
num_mat = [0,1,2]
num_groups = [0,1]
mat = Material(num_mat, num_groups)
mat = Material(3,2)
mat.set_sigma_t(0, 0, 1.0)
mat.set_sigma_t(0, 1, 2.0)
mat.set_sigma_s(0, 0, 0, 1.0)
mat.set_sigma_s(0, 0, 1, 2.0)
mat.set_sigma_s(0, 1, 0, 3.0)
mat.set_sigma_s(0, 1, 1, 4.0)
print mat.sigma_t(0, 0)
print mat.display()
答案 0 :(得分:4)
在display
内,您反复拨打mat.set_sigma_s(0, 0, 1)
等电话,但set_sigma_s
除了self
之外还有4个参数。
此外mat
指的是您拥有的mat
个变量,而不是当前正在操作的对象。相反,您应该在方法中使用self
来表示“调用的任何对象display
。
我对你想要的东西感到困惑,因为你在创建列表时有调用,但set_sigma_s
没有返回任何内容。也许您打算调用self.sigma_s(0, 0, 0)
来读取值?