Advertisement
am_dot_com

FP 2022-11-28

Nov 28th, 2022 (edited)
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. # computador_v3.py
  2. class Computador:
  3. # uma dunder function (dunder = double underscore)
  4.  
  5. def __init__(
  6. self,
  7. pCPU="Intel",
  8. pRAM=16,
  9. pStorage=1024
  10. ):
  11. # aqui constrói-se cada objeto
  12. # do tipo
  13. # a palavra reservada "self"
  14. # significa "o objeto em construção"
  15. self.mCPU = pCPU
  16. self.mRAM = pRAM
  17. self.mStorage = pStorage
  18. # def __init__
  19.  
  20. # método dinâmico
  21. # se a lista de params começa pela palavra
  22. # reservada self, o método é dinâmico
  23. # impacto na utilização?
  24. # para se usar um método dinâmico
  25. # o padrão, na chamada é:
  26. # nomeDoObjeto.nomeDoMétodo()
  27. # se o método fosse "static"/estático
  28. # partilhado por todas as instâncias,
  29. # NÃO poderia ter a palavra self
  30. # o padrão de utilização é:
  31. # nomeDaClass.nomeDoMétodo()
  32.  
  33. # para ensinar a linguagem a representar
  34. # instâncias da class enquanto frases
  35. def __str__(self):
  36. strMsg:str = ""
  37. strMsg+=f"CPU: {self.mCPU} "
  38. strMsg+=f"RAM: {self.mRAM} "
  39. strMsg+=f"Storage: {self.mStorage}"
  40. return strMsg
  41. # def __str__
  42.  
  43. @staticmethod
  44. def vaiAvariar():
  45. return True
  46. # def vaiAvariar
  47.  
  48.  
  49. def __gt__(self, other):
  50. return self.mRAM>other.mRAM
  51. # class Computador
  52.  
  53. # 3 formas diferentes de usar uma função
  54. # em linguagens FORTEMENTE tipificadas
  55. # isso significa que têm que existir
  56. # 3 implementações diferentes da mesma
  57. # função, com 3 assinaturas diferentes,
  58. # 3 listas de params diferentes.
  59. # Cada uma dessas funções diz-se um "overloading"
  60. # Em Python não há "overloading"
  61. # o mesmo efeito atinge-se por
  62. # valores por defeito para params
  63. c2 = Computador("AMD", 32, 123456)
  64. # o método __str__ é o comportamento por defeito
  65. # default behaviour de QUALQUER objeto, de
  66. # QUALQUER tipo
  67. # ou seja, se NADA pedirmos a um objeto
  68. # estamos a pedir-lhe o comportamento __str__
  69. # por isso, print(c1) equivale a print(c1.__str__())
  70. print(c2.__str__())
  71. c1 = Computador("Intel", 16, 1024)
  72. print(c1.__str__()) #???
  73.  
  74. print (Computador.vaiAvariar())
  75. #print (c1.vaiAvariar())
  76. #print (c2.vaiAvariar())
  77.  
  78. # também não sabe
  79. print(c1>c2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement