Python – 何时创建类以及何时创建函数
是的,所以我正在尝试使用
Python OOP创建一个Contacts应用程序.我是OOP的新手,仍然试图理解这些概念.
我知道Class是所有对象的蓝图.我喜欢将Class视为一个实体,每个Object都是该实体的记录.我来自数据库背景,这就是为什么我这样解释它,随时纠正我. 无论如何,在我正在制作的联系人应用程序中,我创建了类联系人,如下所述: class Contacts(): def __init__(self,firstName,lastName,address,groupType,telephone,mobile,email,photoField): self.firstName = firstName self.lastName = lastName self.address = address self.groupType = groupType self.telephone = telephone self.mobile = mobile self.email = email self.photoField = photoField def showDetails(self): print("First Name:t",self.firstName) print("Last Name:t",self.lastName) print("Address:t",self.address) print("Telephone:t",self.telephone) print("Mobile:t",self.mobile) print("Email:t",self.email) 现在,如果我想通过Contacts类将联系人添加到我用来存储每个联系人对象的列表中,我是否必须创建AddContacts类,还是创建一个函数?我不知道我是否正确地提出了我的问题,以便你理解我的意思? 我想我想说的是添加联系人是一个过程,如果从数据库的角度来看,你不会创建一个名为“tbl_AddContacts”的表,因为你会通过查询或存储来实现过程,所以在我看来我会定义添加联系人是一个功能.但是问我做C#编程的同事他说添加联系人应该由一个类来定义. 这对我来说是一个令人困惑的概念,特别是因为我不明白如何将AddContacts类与Contacts类链接起来,甚至不知道如何首先定义AddContacts类! 这是我为添加联系人定义的功能: def addContacts(): firstName = input("First Name: ") lastName = input("Last Name: ") address = input("Address: ") telephone = input("Telephone: ") mobile = input("Mobile: ") email = input("Email: ") print("n") contact = Contacts(firstName,None,None) contactsList.append(contact) pickle.dump(contactsList,open("save.p","wb")) 请帮帮我,因为我将把它变成一个GUI应用程序(单一分配). 解决方法
添加联系人正在做某事,而不是做某事,所以它作为方法/功能而不是类是有意义的.我建议你的功能实际上应该在两个不同的地方.
从用户输入创建新联系人应该是Contact的类方法: class Contact(object): ... @classmethod def from_input(cls): firstName = input("First Name: ") lastName = input("Last Name: ") address = input("Address: ") telephone = input("Telephone: ") mobile = input("Mobile: ") email = input("Email: ") return cls(firstName,None) 将新联系人添加到联系人列表应该是: >例如,实例的方法. AddressBook或ContactList类(或任何你持有联系人列表的东西);要么 例如: class AddressBook(object): ... def add_contact(self,contact=None): if contact is None: contact = Contact.from_input() self.contacts.append(contact) 现在,您的UI可以创建一个联系人并将其直接传递给address_book.add_contact(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |