将函数返回指定为另一个函数参数

时间:2016-11-23 08:28:23

标签: python class

我已经获得了这个课程以及以下这些功能。有没有办法将new_number中的返回值分配给初始girl构造函数中的参数号?

class girl(person):
    def __init__(self, number, interest):
        self.number = number
        self.interest = interest
        super().__init__()
    def new_number(self):
        n = '0000000000'
        while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]:
            n = str(random.randint(10**9, 10**10-1))
        return n[:3] + '-' + n[3:6] + '-' + n[6:]

3 个答案:

答案 0 :(得分:5)

如果您总是要将其分配给self.number,那么甚至不要将其作为参数接受。只需打电话给它并分配:

class girl(person):
    def __init__(self, interest):
        self.number = self.new_number()
        self.interest = interest
        super().__init__()

    def new_number(self):
        n = '0000000000'
        while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]:
            n = str(random.randint(10**9, 10**10-1))
        return n[:3] + '-' + n[3:6] + '-' + n[6:]

请注意,new_number可以移出类,因为它与它无关,或者它可以是静态的。

答案 1 :(得分:1)

试试这个应该有效。因为你打算调用new_number方法,所以你不需要传递数字。

class Girl():
    def __init__(self, interest=0):
        self.number = self.new_number()
        self.interest = interest
        super().__init__()
    def new_number(self):
        n = '0000000000'
        while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]:
            n = str(random.randint(10**9, 10**10-1))
        num_from_new_number = n[:3] + '-' + n[3:6] + '-' + n[6:]
        return num_from_new_number

答案 2 :(得分:0)

您可以只指定self.number的数量:

class girl(person):
    def __init__(self, number, interest):
        self.number = number
        self.interest = interest
        super().__init__()
    def new_number(self):
        n = '0000000000'
        while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]:
            n = str(random.randint(10**9, 10**10-1))
    self.number = n[:3] + '-' + n[3:6] + '-' + n[6:]   # Assign it here

请注意,在python中,变量self代表对象本身,因此您可以直接在类函数中操作它。

您可以像self.propertyA = someCalculation()

那样进行分配或初始化