【发布时间】:2020-10-19 15:42:47
【问题描述】:
我创建了以下类来在 python 中生成素数:
class primeGen:
def __init__(self, maxNum):
self.allNum = [0]*(maxNum+1)
self.allNum[0], self.allNum[1] = 1, 1
self.primeNum = []
for i in range(2, int(math.sqrt(maxNum))+1):
if self.allNum[i] is 0:
for j in range(i*i, len(self.allNum), i):
self.allNum[j] = 1
for i in range(maxNum):
if self.allNum[i] is 0:
self.primeNum.append(i)
def print(self):
print(self.primeNum)
有没有办法避免在函数中多次使用 self 参数?比如,不是每次都使用 self.primeNum ,我可以只使用 primeNum 吗?
【问题讨论】:
-
能不能用临时局部变量,最后赋值给类变量?
-
有时可以尝试一下——如果你失败了也没什么大不了的——所以继续删除 self.从 self.allNum 看看你自己会发生什么 - 放心,你的电脑不会爆炸......
-
Python 怎么会理解你指的是
instance variable? -
无论如何你必须重写你的课程。打印功能有什么用?如果您只是创建一个
generator而不是打印素数列表,那会好得多。看看:docs.python.org/3/howto/functional.html#generators -
最好补充一下,您使用的是 Eratosthenes 的筛子。还要调用值
True和False而不是 1 和 0 - 以提高可读性。