当两个方法在同一个类中时,如何使一个方法中定义的列表在另一个方法中可用?

2024-09-23 22:17:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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()中附加的长数字-知道为什么吗


Tags: the方法selfreturndefrangelistclass
2条回答

如前所述,您可以使用实例变量self.primes而不是局部变量primes。如果计划重用这些值,这将非常有用

相反,如果您只想使用这些值一次,并且希望goodNumbers调用primeNumber,那么只需在primeNumber的末尾添加return primes(当然在while循环之外)

编辑

由于问题已被修改:

我刚看到你的问题。这是行不通的:如果您使用self.primes在方法之间传递数据,那么您需要首先创建它,可能是在对象初始化时,然后通过调用primeNumber填充它,然后可以在^{中读取/修改

例如:

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

您可以将列表作为变量添加,并将数据传递给: e、 g

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 )

相关问题 更多 >