Olá, gostaria de saber se terá alguma adaptação de Design Pattern utilizando Python 3. Estou fazendo o curso na versão da linguagem 3.6 e já encontrei algumas diferenças.
Por exemplo, realizei um código similar ao apresentado na aula para uma versão de uma calculadora com apenas 2 métodos (soma e exponenciação). Código:
from contas import Soma, Exponenciacao
class RealizaCalculo():
def realiza_calculo(self, num1, num2, operacao):
calculo = operacao.calcular(num1,num2)
print (calculo)
if __name__ == '__main__':
from calculadora import Calculadora
calculador = RealizaCalculo()
valores = Calculadora(2,4)
calculador.realiza_calculo(valores.num1, valores.num2, Soma)
calculador.realiza_calculo(valores.num1, valores.num2, Exponenciacao)
Repare que a forma com quem eu passei o último argumento do método realiza_calculo eu não precisei colocar Soma() ou Exponenciacao() , na verdade se eu colocar acontece um erro e gostaria de entender melhor o por que isso acontece.
Segue abaixo o erro:
calculo = operacao.calcular(num1,num2) TypeError: calcular() takes 2 positional arguments but 3 were given
Ele entende que esse terceiro argumento é o próprio objeto? Não compreendi 100%.
Obrigada desde já :)