2017-04-02 3 views
-2

Ich erstelle ein einfaches GUI-Programm, um Prioritäten zu verwalten.Python-Äquivalent für C# 's generische Liste <T>

Priorities

Ich habe erfolgreich ein Element hinzufügen, um das Listenfeld Managed Funktionalität hinzuzufügen. Jetzt möchte ich das Element zu etwas hinzufügen, was als List <> in C# bekannt ist. Gibt es so etwas in Python?

Zum Beispiel in C#, ein Element zur Listenansicht hinzufügen möchte ich zunächst erstellen:

List<Priority> priorities = new List<Priority>(); 

... und erstellen Sie die folgende Methode:

void Add() 
{ 
    if (listView1.SelectedItems.Count > 0) 
    { 
     MessageBox.Show("Please make sure you have no priorities selected!", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 
    else if (txt_Priority.ReadOnly == true) { MessageBox.Show("Please make sure you refresh fields first!", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information); } 
    else 
    { 
     if ((txt_Priority.Text.Trim().Length == 0)) { MessageBox.Show("Please enter the word!", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information); } 
     else 
     { 
      Priority p = new Priority(); 
      p.Subject = txt_Priority.Text; 

      if (priorities.Find(x => x.Subject == p.Subject) == null) 
      { 
       priorities.Add(p); 
       listView1.Items.Add(p.Subject); 
      } 
      else 
      { 
       MessageBox.Show("That priority already exists in your program!"); 
      } 
      ClearAll(); 
      Sync(); 
      Count(); 
     } 
    } 
    SaveAll(); 

} 
+3

Und Sie konnten keine Informationen finden, die nach "Python-Liste" suchen ?! – jonrsharpe

Antwort

1

Python ist dynamic:

>>> my_generic_list = [] 
>>> my_generic_list.append(3) 
>>> my_generic_list.append("string") 
>>> my_generic_list.append(['another list']) 
>>> my_generic_list 
[3, 'string', ['another list']] 

Sie müssen vor nichts definieren anhängt ein ny Objekt zu einem bestehenden list.

Python verwendet duck-typing. Wenn Sie auf einer Liste iterieren und eine Methode für jedes der Elemente aufrufen, müssen Sie sicherstellen, dass die Elemente die Methode verstehen.

Wenn Sie also das Äquivalent wollen:

List<Priority> priorities 

Sie müssen nur eine Liste initialisieren und stellen Sie sicher, dass Sie nur Priority Instanzen hinzufügen. Das ist es!