当两种方法都在同一 class 中时,如何使在一种方法中定义的列表在另一种方法中可用?
How can I make a list defined in one method available in another method when both methods are in the same class?
我有 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.primes 没有考虑 goodNumbers() 中附加的长数字 - 知道这是为什么吗?
您可以将列表添加为变量,您可以将数据传递给:
例如
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 )
如前所述,您可以使用 实例变量 self.primes
代替 局部变量 primes
。如果您计划重用这些值,这将很有用。
如果您只想使用这些值一次,并且希望 goodNumbers
调用 primeNumber
,则只需在 primeNumber
的末尾添加 return primes
(当然在 while
循环之外)
编辑
由于问题已修改:
我刚看到你编辑的问题。那行不通:如果您使用 self.primes
在方法之间传递数据,那么您需要首先 创建 它,可能在对象初始化时,然后 通过调用primeNumber
填充它,然后你可以read/modify它在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
我有 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.primes 没有考虑 goodNumbers() 中附加的长数字 - 知道这是为什么吗?
您可以将列表添加为变量,您可以将数据传递给: 例如
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 )
如前所述,您可以使用 实例变量 self.primes
代替 局部变量 primes
。如果您计划重用这些值,这将很有用。
如果您只想使用这些值一次,并且希望 goodNumbers
调用 primeNumber
,则只需在 primeNumber
的末尾添加 return primes
(当然在 while
循环之外)
编辑
由于问题已修改:
我刚看到你编辑的问题。那行不通:如果您使用 self.primes
在方法之间传递数据,那么您需要首先 创建 它,可能在对象初始化时,然后 通过调用primeNumber
填充它,然后你可以read/modify它在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