鱼C论坛

 找回密码
 立即注册
查看: 2143|回复: 2

[已解决]如何在调用一个类之后返回一个属性,然后将这个类的属性重新初始化,不影响下一次用

[复制链接]
发表于 2020-1-3 14:24:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Juzhenchengfa(object):
    p_list = []
    def __init__(self):
        pass
    def juzhenchengfa(self, a1, b):
        self.a1 = a1
        self.b = b
    def shuzishuru(self,c,d,e):
        self.i = c
        self.j = d
        self.k = e
        for i in range(self.i):
            linshi = []
            for j in range(self.j):
                aa = 0
                for k in range(self.k):
                    aa =aa  + float(self.a1[i][k])*self.b[k][j]
                linshi.append(aa)
            Juzhenchengfa.p_list.append(linshi)
我写了一个矩阵乘法的类,想的是将它多次调用,只需要将类的属性赋给主函数中的新的变量就好,但是我发现后面再次调用这个类的时候,前面已经使用过产生的结果也会在下一次调用的时候出现,于是我又在它的后面加上了一句Juzhenchengfa.p_list=[],然后所有的调用的矩阵都变成了空矩阵,这就让我很困惑,我如何才能既让它在调用过后不初始化,影响后面的,又不让它改变影响前面的?
最佳答案
2020-1-3 17:53:31
直接写个临时变量 p_list 不好吗?

  1. class Juzhenchengfa(object):
  2.     def __init__(self):
  3.         pass

  4.     def juzhenchengfa(self, a1, b):
  5.         self.a1 = a1
  6.         self.b = b

  7.     def shuzishuru(self, c, d, e):
  8.         self.i = c
  9.         self.j = d
  10.         self.k = e
  11.         p_list = []
  12.         for i in range(self.i):
  13.             linshi = []
  14.             for j in range(self.j):
  15.                 aa = 0
  16.                 for k in range(self.k):
  17.                     aa = aa + float(self.a1[i][k]) * self.b[k][j]
  18.                 linshi.append(aa)
  19.             p_list.append(linshi)
  20.         return p_list


  21. ju = Juzhenchengfa()
  22. ju.juzhenchengfa([[1, 2], [3, 4]], [[5, 6], [7, 8]])
  23. print(ju.shuzishuru(2, 2, 2))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-3 17:53:31 | 显示全部楼层    本楼为最佳答案   
直接写个临时变量 p_list 不好吗?

  1. class Juzhenchengfa(object):
  2.     def __init__(self):
  3.         pass

  4.     def juzhenchengfa(self, a1, b):
  5.         self.a1 = a1
  6.         self.b = b

  7.     def shuzishuru(self, c, d, e):
  8.         self.i = c
  9.         self.j = d
  10.         self.k = e
  11.         p_list = []
  12.         for i in range(self.i):
  13.             linshi = []
  14.             for j in range(self.j):
  15.                 aa = 0
  16.                 for k in range(self.k):
  17.                     aa = aa + float(self.a1[i][k]) * self.b[k][j]
  18.                 linshi.append(aa)
  19.             p_list.append(linshi)
  20.         return p_list


  21. ju = Juzhenchengfa()
  22. ju.juzhenchengfa([[1, 2], [3, 4]], [[5, 6], [7, 8]])
  23. print(ju.shuzishuru(2, 2, 2))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-3 20:09:07 | 显示全部楼层
zltzlt 发表于 2020-1-3 17:53
直接写个临时变量 p_list 不好吗?

我原来用C语言用多了,有点不习惯,最近才开始学的Python,原来可以直接返回一个矩阵,我以为不可以来的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 14:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表