Почему мы используем интерфейс без участника?

Это будет генерировать то, что вам нужно. Лучше ли это, чем помещать код внутри 4 для циклов, я не уверен.

kc = np.linspace (0.1 , 1, 10)
tauI = np.linspace (0.1 , 1, 10)
tauD = np.linspace (0.1 , 1, 10)
tauC = np.linspace (0.1 , 1, 10)

def possible_combinations():               
    for k in kc:                
        for ti in tauI:         
            for td in tauD:     
                for tc in tauC:   
                    yield k, ti, td, tc

for a,b,c,d in possible_combinations():    
    print( a, b, c, d )          

itertools.combination делает все комбинации из n элементов из одного списка.

from itertools import combinations  
for i, j in combinations([1,2,3,4], 2):   
    print(i,j)

out: 1 2
     1 3
     1 4
     2 3
     2 4
     3 4
7
задан Canavar 17 March 2009 в 13:46
поделиться

4 ответа

Это должно гарантировать, что можно рассматривать набор объектов как тот же тип и затем выполнить некоторые операции на том типе (Вы знаете, что он должен наследоваться объекту).

Думайте о нем как атрибуты. Это - метаданные типа.

Вы также могли бы хотеть выполнить операцию на известном типе (например, Система. Сеть. UI.Control), но только выполняют ту операцию, если тип наследовался определенному интерфейсу (например, INamingContainer).

foreach(var ctrl in this.Controls)
{
    if (ctrl is INamingContainer)
    {
        // Do something on the control
    }
}
8
ответ дан 6 December 2019 в 06:15
поделиться

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

8
ответ дан 6 December 2019 в 06:15
поделиться

Чтобы перепутать pythonistas, кто думает, утиный ввод прохладен.

3
ответ дан 6 December 2019 в 06:15
поделиться

Интерфейсы Memberless используются для обеспечения подобных mixin возможностей в C#. Так, учитывая класс A:

class A : B { ... }

Можно дать ему дополнительную функциональность (множественное наследование крыла) путем определения интерфейса IStuff:

interface IStuff {}

затем 'реализовывая' его в A:

class A : B, IStuff { ... }

и затем добавление дополнительных опций

class Methods {
  public static void Something(this IStuff stuff) {
    // some functionality here
  }
}
10
ответ дан 6 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: