неявный по сравнению с явной интерфейсной реализацией [дубликат]

Спасибо всем за ваш вклад. Я перепробовал все и получил хороший ответ. Кажется, достаточно просто. Причина, по которой я хочу это, потому что я хочу напечатать его в формате csv в одну строку, и всякий раз, когда он получил ошибку, я хочу, чтобы он оставлялся пустым, чтобы он оставлял место для других данных, как в электронной таблице. Но это другая проблема для другого дня. Хочешь учиться 1-му, а потом, если я все еще застрял, спросит в новой теме (?).

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

product_sizes = view_product.find('dl', id='dl_1')
product_size01 = product_sizes.find_all('li')[0].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size02 = product_sizes.find_all('li')[1].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size03 = product_sizes.find_all('li')[2].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size04 = product_sizes.find_all('li')[3].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size05 = product_sizes.find_all('li')[4].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size06 = product_sizes.find_all('li')[5].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size07 = product_sizes.find_all('li')[6].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size08 = product_sizes.find_all('li')[7].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size09 = product_sizes.find_all('li')[8].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size10 = product_sizes.find_all('li')[9].text.replace('\r', '').replace('\n', '').replace(" ","")

Спасибо вам, ребята, за быстрый ответ и отличное сообщество.

73
задан Community 23 May 2017 в 11:46
поделиться

2 ответа

существует хорошее и довольно подробное сообщение в блоге об этом.

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

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

ниже правил от Brad Abrams , блог .

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

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

115
ответ дан 24 November 2019 в 12:18
поделиться

Существует еще один способ посмотреть на него, от самой лабиринтообразной реализации, здесь: http://blogs.msdn.com/cbrumme/archive/2003/05/03/51381.aspx .

, Но короче говоря, неявная реализация дает Вам - преобразование типов, явная реализация не будет доступна, если объект не будет явно броском типа к тому интерфейсному типу.

4
ответ дан 24 November 2019 в 12:18
поделиться
Другие вопросы по тегам:

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