使用连接字符串作为对象名称创建新对象

时间:2012-12-20 02:28:14

标签: python oop

我有一个简单的课程,用于存储有关参加会议的人员的信息:

class Attendee:
    def __init__(self, fName, lName, email):
        self.fName = fName
        self.lName = lName
        self.email = email

我正在尝试使用两个用户输入字符串的组合创建Attendee对象:

#get inputs from user:
fName = input("First name: ")
lName = input("Last name: ")
    .....

newObjectName = fName[0] + lName

newObjectName = Attendee(fName, lName, email)

显然这不起作用 - 但是你得到了我正在拍摄的想法。 我知道在C#中你可以通过以下方式创建一个新对象:

Attendee newObjectName = new Attendee(fName, lName, email)

这将如何转化为Python?

由于

3 个答案:

答案 0 :(得分:4)

如果您想拥有变量变量名,那么您需要一个不同的数据结构。例如,字典效果很好:

attendees = {}
newObjectName = fName[0] + lName
attendees[newObjectName] = Attendee(fName, lName, email)

答案 1 :(得分:1)

您已经在问题中找到了代码 - newObjectName = Attendee(fName, lName, email)

答案 2 :(得分:0)

  在下面的Attendee类中定义setter   这将为您的数据属性(变量)设置值   每当创建一个对象并且用户输入数据时

     

您还可以定义用于检索这些数据的getter   按需

     

str 的最后一行会将对象状态打印为字符串

class Attendee:

    def __init__(self, fName, lName, email):

        self.fName = fName
        self.lName = lName
        self.email = email

    def set_fName(self, fName):
        self.__fName = fName

    def set_lName(self, lName):
        self.__lName = lName

    def set_email(self, email):
        self.__email = email

    def get_fName(self, fName):
        return self.__fName

    def get_lName(self, lName):
        return self.__lName

    def get_email(self, email):
        return self.__email

    def __str__(self):
        return "First name: " + self.__fName + "\nLast name: " + self.__lName + "\nEmail: " + self.__email
  下面的

是要求用户输入的主程序的示例   并创建一个类对象(New_attendee类)   我添加了一个首先创建为空的字典(= {})   每个条目都存储在字典中

def main():

    NewAttendee = {}

    again = 'y'

    while again == 'y':

        fName = input("First name: ")
        lName = input("Last name: ")
        email = input("Email: ")

        entry = Attendee(fName,lName, email)

        if fName not in NewAttendee:
            NewAttendee[fName] = entry
            print('The new attendee has been added')
        else:
            print('That name already exists.')

        again = input('Do you want to add a new attendee? \'y\' for yes -->')

main()
  

希望有所帮助!   PS:我没有把 str (对象状态作为字符串)付诸行动