我有two methods within the same class
,我想让一个方法中的list
在另一个方法中可用,我该怎么做?
class Solution:
primes=[]
def primeNumber(self,n):
numbers = set(range(n, 1, -1))
self.primes = []
while numbers:
p = numbers.pop()
self.primes.append(p)
numbers.difference_update(set(range(p * 2, n + 1, p)))
def goodNumbers(self,f):
self.primes.append(f)
return self.primes
x=Solution()
print(x.primeNumber(100)) ##populate the list
print(x.goodNumbers(123456789)) ##return the list as populated by previous call, and with the long number appended
由于某种原因,self。质数没有考虑到goodNumbers()中附加的长数字-知道为什么会这样吗?
正如已经说过的,您可以使用实例变量self.primes
而不是局部变量primes
。如果您计划重用这些值,这将非常有用。
如果您只是想使用一次值,并且您希望goodNumbers
调用primeNumber
,那么只需在primeNumber
的末尾添加return primes
(当然在while
循环之外)
编辑
既然问题已被修改:
我刚看到你编辑过的问题。这是行不通的:如果你使用self.primes
在方法之间传递数据,那么你需要首先创建它,可能在对象初始化时,然后用primeNumber
调用填充它,然后你可以在goodNumbers
中读取/修改它。
例如:
class Solution:
primes=[]
def primeNumber(self,n):
numbers = set(range(n, 1, -1))
self.primes = []
while numbers:
p = numbers.pop()
self.primes.append(p)
numbers.difference_update(set(range(p * 2, n + 1, p)))
def goodNumbers(self,n):
self.primes.append(7598347534)
return self.primes
x=Solution
x.primeNumber(100) ##populate the list
x.goodNumbers(123456789) ##return the list as populated by previous call, and with the long number appended
你可以将list添加为一个变量,你可以将数据传递给它:例如
def goodNumbers(self,n,primes = [] ):
newprime = ( get the next prime number )
if not newprime in primes:
primes.append( newprime )
return primes
primes = [2, 3, 5, 7, 11, 13, 17, 19]
goodnumbers( n, primes )