Python имеет операторы преобразования?

При попытке записать новую строку в файл, Вы могли бы просто использовать BufferedWriter новая строка () метод.

7
задан Jon Seigel 7 April 2010 в 02:02
поделиться

4 ответа

, иногда может быть достаточно прямого подкласса от int. затем __ add __ и __ radd __ не требуют дополнительных затрат.

class IntContainer(int):
    pass
i = IntContainer(3)
print i + 5 # 8 
print 4 + i # 7

class StrContainer(str):
    pass
s = StrContainer(3)
print s + '5' # 35
print '4' + s # 43
3
ответ дан 6 December 2019 в 09:21
поделиться

Эндрю справа. Он покрыт wix.chm.

Это неправильные размеры. Из соответствующей темы документации Wix :

Замена растровых изображений по умолчанию

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

Вот еще одна ссылка, посвященная тем же операторам:

Между прочим, в Python есть операторы приведения типов:

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

class IntContainer2(object):
    def __init__(self, x):
        self.x = x

    def __int__(self):
        return self.x


ic = IntContainer2(3)
print int(ic) + 6
print 6 + int(ic)

Но это не удастся:

print ic + 6  # error: no implicit coercion
11
ответ дан 6 December 2019 в 09:21
поделиться

Вы не получите операторов преобразования, как в C ++, потому что Python не имеет такой сильной системы статических типов. Единственные операторы автоматического преобразования - это те, которые обрабатывают числовые значения по умолчанию (int / float); они предопределены в языке и не могут быть изменены.

"Преобразование" типов обычно выполняется конструкторами / фабриками. Затем вы можете перегрузить стандартные методы, такие как __ add __ , чтобы они работали как другие классы.

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

Это то, что вам нужно?

In [1]: class IntContainer(object):
   ...:     def __init__(self, val):
   ...:         self.val = val
   ...:     def __add__(self, val):
   ...:         return self.val + val
   ...:     def __radd__(self, val):
   ...:         return self.val + val
   ...:
   ...:

In [2]: i = IntContainer(3)

In [3]: i + 5
Out[3]: 8

In [4]:
3
ответ дан 6 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

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