私にはContact
オブジェクトも所有していても意味がありませんcontact_list
属性であり、インスタンス化ではなくクラス全体の場合はさらに少なくなります。モデルContact
オブジェクトを作成し、それらのすべてを表示する方法を知っているAddressBook
、代わり
class Contact(object):
def __init__(self, name, email):
self.name = name
self.email = email
def __str__(self):
return f"{self.name} <{self.email}>"
# or "{} <{}>".format(self.name, self.email) in older versions of
# python that don't include formatted strings
contacts = []
def print_contacts(contacts: "list of contacts") -> None:
for c in contacts:
print(c)
adam = Contact("Adam Smith", "[email protected]")
contacts.append(adam)
bob = Contact("Bob Jones", "[email protected]")
contacts.append(bob)
charlie = Contact("Charlie Doe", "[email protected]")
contacts.append(charlie)
print_contacts(contacts)
# Adam Smith <[email protected]>
# Bob Jones <[email protected]>
# Charlie Doe <[email protected]>
をまたは:私の代わりにこれを行うだろう。
class AddressBook(list):
def add_contact(self, *args, **kwargs):
new_contact = Contact(*args, **kwargs)
self.append(new_contact)
def display_contacts(self):
for contact in self:
print(contact)
contacts = AddressBook()
contacts.add_contact("Adam Smith", "[email protected]")
contacts.add_contact("Bob Jones", "[email protected]")
contacts.add_contact("Charlie Doe", "[email protected]")
contacts.display_contacts()
print_contacts(Contact.contact_list)、Pythonでコメントもあなたはそれが – arielnmz
__init__メソッドがないクラスメソッドまたはいずれかの因子としての第2の機能をマークするアウト必要がある、 '#'ではない '//'でマークされています意味のある値を返します。ですから、基本的に 'Contact.contact_list.append(self)'を実行する必要があります。なぜなら 'return'は何も役に立たないからです。そして、list.append()はとにかく何も返しません。 –