2016-04-06 3 views
2

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

StringOperand % TupleOperand или

StringOperand % DictionaryOperand

Или это просто произвольное использование% для функция форматирования строк?

Я предполагаю, что оператор строка форматирования не является вызовом модульной арифметики следующие:

tuple = (1,2,3) 
print '%d %d %d'%tuple 

принтами: 1 2 3, но

print '%d %d %d %d'%tuple 

возвращается TypeError: не хватает args для формата str

+3

Это перегрузка * оператора * и распространена в python. Класс может реализовать оператор, чтобы означать все, что ему нравится, путем реализации специального метода, в данном случае '__mod __()'. Например, попробуйте 'print 'hello" * 3'. См. Также https://docs.python.org/2/library/operator.html – cdarke

ответ

3

Это operator overloading. То, о чем вы говорите, - это встроенный язык, но вы можете перегружать методы самостоятельно. Например, перегрузка + оператора, который оформлен в питоне по __add__ методу:

class YourMath(object): 
    def __init__(self, param): 
     self.param = param 

    def __add__(self, x): 
     return int(str(self.param) + str(x.param)) # concatenation 


x = YourMath(5) 
y = YourMath(4) 

+ будет конкатенировать вместо суммы вверх. Результат x+y в данном случае 54.

+0

Является ли это примером перегрузки оператора: «import math as m»? –

+0

Нет «import math as m» - это импорт модуля 'math' с псевдонимом' m' –

Смежные вопросы