【问题标题】:How can I reference variable in different functions?如何在不同的函数中引用变量?
【发布时间】:2021-11-22 05:25:15
【问题描述】:

class Person:
    def __init__(self, name, address, phone):
        self.name = name
        self.address = address
        self.phone = phone
    
    def set_name(self, name):
        self.name = name
    
    def set_address(self, address):
        self.address = address
    
    def set_phone(self, phone):
        self.phone = phone
    
    def get_name(self):
        return self.name
    
    def get_address(self):
        return self.address
    
    def get_phone(self):
        return self.phone
    
    
class Customer:
    def __init__(self, number, mail):
      self.number = number
      self.mailing_list = mail
    
    def set_number(self, number):
        self.number = number 
    
    def set_mailinglist(self, mail):
        self.mailing_list = mail
    
    def get_number(self):
        return self.number
    
    def get_mailinglist(self):
        if m == 'Y' or m == 'y':
            self.mailing_list = 'Yes'
        elif m =='N' or m =='n':
            self.mailing_list = 'No'
        return self.mailing_list
    

def main():
    me = Person(name= n , address = a, phone = p)
    
    n = input('Enter Customer Name: ')
    a = input('Enter Customer Address: ')
    p = input('Enter Customer Phone Number: ')
    
    print('Customer Name:', me.name)
    print('Customer Address:', me.address)
    print('Customer Phone Number:', me.phone)
    
    me1 = Customer(number= nu, mail = m)
    
    nu = int(input('Enter Customer Number: '))
    m = input('Add Customer to Mailing List [Y/N]?: ')
    
    print('Customer Number:', me1.number)
    print('Customer Mailing List:', me1.mailing_list)
    
main()

我想让它打印用户在输入中回答的内容以及其他内容。我怎样才能让我在 main 中拥有的变量通过我拥有的函数? 如果我犯了任何其他我没有注意到的错误,请告诉我,因为我最了解错误以及如何解决这些错误。

【问题讨论】:

  • 你运行你的程序了吗?它会在me = Person(name= n , address = a, phone = p) 处抛出错误。
  • 在定义变量之前不能使用它。接受输入,将用户的响应存储在变量中,然后使用这些变量来初始化 Person,而不是反过来。

标签: python python-3.x class


【解决方案1】:

所见行为的原因是:

  1. 您之前已经创建了Person 的对象,而没有接受输入。

  2. Customer 类型的 obj 也是如此。

当您在获取输入之前创建对象时,分配给成员变量的值是None。 我已经更新了您的函数main,方法是将代码创建PersonCustomer 的对象放在正确的位置,现在它将按预期工作。

def main():

    n = input('Enter Customer Name: ')
    a = input('Enter Customer Address: ')
    p = input('Enter Customer Phone Number: ')
    me = Person(name= n , address = a, phone = p)  # the right place to create obj

    print('Customer Name:', me.name)
    print('Customer Address:', me.address)
    print('Customer Phone Number:', me.phone)


    nu = int(input('Enter Customer Number: '))
    m = input('Add Customer to Mailing List [Y/N]?: ')
    me1 = Customer(number= nu, mail = m)    # right place to create object

    print('Customer Number:', me1.number)
    print('Customer Mailing List:', me1.mailing_list)

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 1970-01-01
    • 2020-04-05
    • 2020-03-16
    • 1970-01-01
    • 2019-02-06
    • 2020-01-02
    • 2019-05-12
    • 2020-10-14
    相关资源
    最近更新 更多