2013-08-18 3 views
0

Мне нужно создать программу, состоящую из двух классов; a «человек» класс и «друг» класс. Класс лица должен иметь атрибуты (first_name, last_name, phone_number). Класс «друг» должен иметь дату рождения и по электронной почте.
Приложение представит пользователю основное меню, которое позволит пользователю добавить контакт, найти контакт по имени или выйти из приложения.
Я нашел отличное руководство here
Я не уверен, как это сделать с несколькими классами. Я на 5-недельном курсе, с учебником, который не помогает. Если бы кто-нибудь мог пропустить меня, хотя бы, я был бы признателен!
Вот что я сейчас:Программа, состоящая из нескольких классов

class person: 
    def information: 
     first = print(input("first: ") 
     last = print(input("last: ") 
     number = print(input("phone number: ") 
class friend: 
    def friendinfo: 
     email = print(input("email: ") 
     birthday = print(input("birthday: ") 

Когда пользователь выбирает, чтобы добавить контакт, приложение будет запрашивать у пользователя, если они хотят, чтобы добавить обычный человек или друг. Если пользователь хочет добавить нового обычного человека, то приложение запросит имя, фамилию и номер телефона для этого лица.
Если пользователь хочет добавить нового друга, то приложение запросит у пользователя имя, фамилию, номер телефона, адрес электронной почты и дату рождения. Когда пользователь выбирает поиск по имени, приложение запрашивает у пользователя фамилию, а затем приложение отображает полную информацию для всех контактов с этой фамилией.

ответ

4

Примечания по классам

класс подобен план для вещи. Когда вы создаете класс, вы просто составляете план, например, рисуете архитектурные планы для здания. Однако это здание еще не создано. Вы также можете принять эти планы и создать множество зданий, которые все сформированы одинаково (я живу в Южной Калифорнии, и это очень ориентированное на ООП место, как показано пригородами). Во всяком случае, класс - это всего лишь шаблон. Когда вы на самом деле делаете то, что определяет класс, , то вы можете заполнить его данными.

Проблема Часть I

Итак, давайте посмотрим на то, что вам нужно:

Человек класс должен иметь атрибуты (first_name, last_name, phone_number). Класс «друг» должен иметь дату рождения и адрес электронной почты.

Так давайте создадим класс с именем человека:

class Person: 

Когда мы создаем классы, мы «Создание» их, и мы часто нуждаются некоторые инструкции, программа знает, что делать, когда один из этих «Персона «вещи создаются/создаются. Мы часто ставили эти инструкции в разделе под названием «INIT»:

class Person: 
    def __init__(self): 

«я» часть сбивает с толку, но каждый метод в нашем классе нужно каким-то образом зная, что это часть конкретного объекта класса. Это действительно нечеткий способ замалчивания того, что происходит с «я». На данный момент это просто общее правило: все функции, которые мы ставим в нашем классе, будут иметь «я» в качестве их первых аргументов.

Далее мы хотим добавить указанные вами атрибуты. Это обычно выглядит следующим образом:

class Person: 

    def __init__(self, first_name, last_name, phone_number): 
     self.first_name = first_name 
     self.last_name = last_name 
     self.phone_number = phone_number 

я эти атрибуты в функции __init__, что означает, что всякий раз, когда я первого создать один из этих вещей, «человек», я необходим указать эти вещи или мое творение будет не работают. Когда я создаю один, я просто должен назвать мой класс Person и дать ему материал, он ожидает, что:

bob = Person('Bob', 'Something', '43819110') 

Теперь я могу получить доступ атрибуты Боба следующим образом:

>>> bob.phone_number 
'43819110' 

Мы можем добавить новый человек (потенциально используя input(), как у вас есть выше ...):

sinatra = Person('Frank', 'Sinatra', 217653918') 

И мы делаем хорошо, создавая все виды людей с нашей Person. Мы будем нуждаться в какой-то контейнер для хранения всех этих людей:

contacts = [sinatra, bob, etc.] 

Мы можем получить чей-то номер телефона перебирая этого контейнера:

for contact in contacts: 
    if contact.first_name == 'Bob': 
     print(contact.phone_number) 

Там очень много работать с здесь, но это может помочь вам начать работу в правильном направлении. Дело в том, чтобы разделить задачи и попытаться заставить их работать вместе. Счастливое кодирование!


[Удаляется все остальное, потому что это слишком долго, чтобы быть действительно полезным для кого-либо еще]

+0

+10 для более подробного и доброжелательного ответа, чем у меня! – Joohwan

+0

Ну, спасибо, друг. Занятия очень забавны. – erewok

+0

@erewok Вы очень хорошо это объясняете, я внес коррективы. Я не могу проверить его, хотя вы знаете, почему я получаю синтаксические ошибки? Что мне нужно сделать, чтобы исправить это? – Stevenson

0

Ну, я не могу дать вам ответы на все вопросы, так как кажется, что это ваша домашняя работа, но я помогу вам начать работу. Это минимальное требование (и, вероятно, все, что вам нужно) для класса Person вы описали:

class Person(object): 

    def __init__(self, first, last, phone): 
     self.first_name = first 
     self.last_name = last 
     self.phone_number = phone 

И я предполагаю, ваш инструктор курса хочет использовать наследование. Если бы он ... ну, даже если бы он этого не сделал, было бы неплохо использовать наследование для Друга (т. Е. Класс Друга должен быть производным классом Лица).

Более подробную информацию о наследовании проверить эту тему:

What is a basic example of single inheritance using the super() keyword in Python?

Не стесняйтесь оставить комментарий, если у вас есть какие-либо вопросы.

1

Это может не соответствовать вашим требованиям структуры, но если бы я делать то, что вы делаете, я бы, вероятно, попробовать что-то, что это структурированное больше, как это:

class contacts: 
    contacts = [{...}, {...}] # Contains all the contacts as dictionaries in a list 

    def add_person(...): 
     self.all_contacts += ... 

    def add_friend(...): 
     self.all_contacts += ... 

    def get_contact(...):  # This is just potential code 
     if ... in self.all_contacts: 
      return ... 

(Может быть, имея друзей и людей обособленным, если я действительно хотел:)

people = [{...}, {...}]   # all people contacts 
friends = [{...}, {...}]   # all friend contacts 
all_contacts = people + friends # both 

Я предпочитаю этот метод, потому что (я думаю) он имел бы более ясную иерархию, чем отдельные классы для двух подобных вещей. (т.е. друзья и люди)

Таким образом, делает его более понятным, чтобы иметь разные, как несколько экземпляров «связаться с Книгами по contacts класса, с другом и людьми категории в каждом из них.

jims_contacts = contacts() 
jims_contacts.add_friend("Megan", "Cook", 02754321, "[email protected]", 170398) 

more_contacts = contacts() 

P.S. Один контакт будет выглядеть как словарь:

{'first':"Zaphod", 'last':"Beeblebrox", 'number':2293107} 

... и каждый контакт сохраняется в списке. Это позволяет легко извлекать атрибуты и находить вещи позже.

Удачи вам!