Fundamentos de Programaci贸n y Python

1

驴Por qu茅 aprender Python?

2

Introducci贸n a Python

3

Conceptos B谩sicos de Programaci贸n

4

Pr谩ctica: Te doy la bienvenida a los ejercicios interactivos

5

Manipulaci贸n de Cadenas de Texto en Python

6

Enteros, Flotantes y Booleanos

7

Todo lo que Debes Saber sobre print en Python

8

Operaciones Matem谩ticas en Python

9

Operaciones de Entrada/Salida en Consola

Colecci贸n y Procesamiento de Datos en Python

10

Listas

11

M茅todo slice

12

Listas de m谩s dimensiones y Tuplas

13

Aplicaci贸n de Matrices

14

Diccionarios

15

Comprehension Lists en Python (CLASE NUEVA)

Control de Flujo en Python

16

Estructuras condicionales

17

Bucles y Control de Iteraciones

18

Generadores e Iteradores

Funciones y Manejo de Excepciones en Python

19

Uso de Funciones en Python

20

Funciones Lambda y Programaci贸n Funcional en Python

21

驴C贸mo realizar una funci贸n recursiva en Python?

22

Manejo de Excepciones y Uso de Pass (CLASE NUEVA)

Programaci贸n Orientada a Objetos en Python

23

Fundamentos de Programaci贸n Orientada a Objetos en Python

24

Ejercicio Biblioteca con POO

25

Herencia en POO con Python

26

Objetos heredados

27

Los 4 pilares de la programacion orientada a objetos

28

Uso de super() en Python (CLASE NUEVA)

29

Superando los Fundamentos de Programaci贸n Orientada a Objetos en Python

Lectura y escritura de archivos

30

Manejo de Archivos .TXT (CLASE NUEVA)

31

Manejo de Archivos CSV (CLASE NUEVA)

32

Manejo de Archivos JSON (CLASE NUEVA)

Biblioteca est谩ndar de Python

33

Biblioteca est谩ndar en Python (CLASE NUEVA)

34

Librer铆a Os, Math y Random (CLASE NUEVA)

35

Librer铆a Statistics y An谩lisis Estad铆stico (CLASE NUEVA)

36

Proyecto final: Guerra naval

Conceptos avanzados de Python

37

Recapitulaci贸n de lo aprendido hasta ahora

38

Escribir c贸digo Pythonico y profesional

39

Comentarios y Docstrings en Python

40

Scope y closures: variables locales y globales

41

Anotaciones de tipo

42

Validaci贸n de tipos en m茅todos

43

Librer铆a Collections y Enumeraciones

Decoradores

44

Decoradores en Python

45

Decoradores anidados y con par谩metros

46

Uso de Decoradores en clases y m茅todos

M茅todos y estructura de clases en Python

47

M茅todos m谩gicos

48

Sobrecarga de operadores

49

Implementaci贸n de `if __name__ == "__main__":`

50

Metaprogramaci贸n en Python

51

Uso de *args y **kwargs

52

M茅todos privados y protegidos

53

Gesti贸n avanzada de propiedades

54

M茅todos est谩ticos y de clase avanzados

Programaci贸n concurrente y as铆ncrona

55

Introducci贸n a la concurrencia y paralelismo

56

Threading y multiprocessing en Python

57

Asincronismo con asyncio

58

Asincronismo y concurrencia

Creaci贸n de m贸dulos y paquetes

59

Creaci贸n de m贸dulos en Python

60

Gesti贸n de paquetes

61

Publicaci贸n de paquetes en PyPI

Proyecto final

62

Implementaci贸n de un sistema completo

63

Implementaci贸n de un Sistema Completo

You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

0 D铆as
8 Hrs
17 Min
57 Seg
Curso de Python

Curso de Python

Carli Code

Carli Code

Fundamentos de Programaci贸n Orientada a Objetos en Python

23/63
Resources

Object-oriented programming (OOP) is a programming paradigm based on organizing software into objects, which are instances of classes. Classes act as generic templates that define attributes and behaviors. For example, a "Person" class can have attributes such as first name, last name and date of birth.

How do you create classes and objects in Python?

To create a class in Python, you use the reserved word class followed by the class name with the first letter capitalized. Within the class, a constructor is defined with the __init__ function. This function initializes the attributes of the object.

Example of the creation of a class and object

class Person: def __init__(self, name, age):self.name = name self.age = age def greet(self):print(f"Hello, my name is {self.name} and I am {self.age} years old")# Create objects of the class Person Person person1 = Person("Ana", 30) person2 = Person("Luis", 25) person1.greet() person2.greet()

What are methods in a class?

Methods are functions defined within a class that operate on the objects of the class. In the example above, greet is a method of the Person class.

How to manage a bank account with OOP?

A practical example of OOP is the management of a bank account. We create a BankAccount class with methods to deposit and withdraw money, as well as to activate and deactivate the account.

Example of a BankAccount class

class BankAccount: def __init__(self, account_holder, balance):self.account_holder = account_holder self.balance = balance self.is_active = True def deposit(self, amount): if self.is_active: self.balance += amount print(f"Deposited {amount}. Current balance: {self.balance}") else: print("Cannot deposit, account inactive") def withdraw(self, amount): if self.is_active: if amount <= self.balance: self.balance -= amount print(f"Withdrawn {amount}. Current balance: {self.balance}") else: print("Insufficient funds") else: print("Cannot withdraw, account inactive") def deactivate(self):self.is_active = Falseprint("Account has been deactivated") def activate(self):self.is_active = Trueprint("The account has been activated")# Create objects of the BankAccount classaccount1 = BankAccount("Anna", 500) account2 = BankAccount("Luis", 1000) account1.deposit(500) account2.withdraw(100) account1.deactivate() account1.deposit(200) account1.activate() account1.deposit(200)

How are objects created and handled in Python?

The creation of objects follows a syntax similar to the creation of variables, but using the name of the class followed by the necessary parameters for the constructor.

Example of using the BankAccount class

# Account creation account1= BankAccount("Ana", 500) account2 = BankAccount("Luis", 1000)# Performing operationsaccount1.deposit(500) account2.withdraw(100) account1.deactivate() account1.deposit(200) # Cannot deposit, account inactive account1.activate() account1.deposit(200) # Deposit successful

Contributions 57

Questions 3

Sort by:

Want to see more contributions, questions and answers from the community?

# Fundamentos de la Programaci贸n Orientada a Objetos (POO) La Programaci贸n Orientada a Objetos es un paradigma de programaci贸n que organiza el dise帽o del software en torno a objetos. Los objetos son instancias de clases, que pueden tener atributos (datos) y m茅todos (funciones). #### Conceptos Clave 1. **Clase**: Es un molde o plantilla que define los atributos y m茅todos que tendr谩n los objetos. 2. **Objeto**: Es una instancia de una clase. 3. **Atributo**: Es una variable que pertenece a una clase o a un objeto. 4. **M茅todo**: Es una funci贸n que pertenece a una clase o a un objeto. 5. **Herencia**: Es un mecanismo por el cual una clase puede heredar atributos y m茅todos de otra clase. 6. **Encapsulamiento**: Es el concepto de ocultar los detalles internos de un objeto y exponer s贸lo lo necesario. 7. **Polimorfismo**: Es la capacidad de diferentes clases de ser tratadas como instancias de la misma clase a trav茅s de una interfaz com煤n.
**Self - Analog铆a con un espejo:** Imagina que cada objeto tiene un espejo. Cuando un objeto se mira en el espejo (`self`), ve sus propios atributos (nombre, color, nivel de bater铆a) y puede actuar sobre ellos (caminar, hablar, cargar bater铆a). Ejemplo con robot's: ```python class Robot: def __init__(self, nombre, color, nivel_bateria): self.nombre = nombre self.color = color self.nivel_bateria = nivel_bateria def caminar(self): if self.nivel_bateria > 10: print(f"{self.nombre} est谩 caminando.") self.nivel_bateria -= 10 # Reduce la bater铆a al caminar else: print(f"{self.nombre} necesita recargar bater铆a.") def hablar(self, mensaje): print(f"{self.nombre} dice: {mensaje}") def cargar_bateria(self): self.nivel_bateria = 100 print(f"{self.nombre} ha recargado su bater铆a al 100%.") # Creamos dos robots mi_robot = Robot("R2-D2", "blanco", 100) otro_robot = Robot("C-3PO", "dorado", 80) # Hacemos que los robots realicen acciones mi_robot.caminar() # Output: R2-D2 est谩 caminando. mi_robot.hablar("隆Hola!") # Output: R2-D2 dice: 隆Hola! otro_robot.hablar("隆Saludos!") # Output: C-3PO dice: 隆Saludos! otro_robot.caminar() # Output: C-3PO est谩 caminando. # Simulamos que los robots caminan varias veces for _ in range(10): mi_robot.caminar() mi_robot.caminar() # Output: R2-D2 necesita recargar bater铆a. mi_robot.cargar_bateria() # Output: R2-D2 ha recargado su bater铆a al 100%. mi_robot.caminar() # Output: R2-D2 est谩 caminando. ```
La Programaci贸n Orientada a Objetos (POO) es un paradigma de programaci贸n que se basa en el uso de \*\*objetos\*\* para dise帽ar y desarrollar aplicaciones. Este enfoque se centra en crear software que sea modular, reutilizable y m谩s f谩cil de mantener. Aqu铆 est谩n los fundamentos clave de la POO: \### 1. \*\*Clases y Objetos\*\* \- \*\*Clase:\*\* Una clase es un molde o plantilla que define las propiedades (atributos) y comportamientos (m茅todos) que tendr谩n los objetos creados a partir de ella. Por ejemplo, una clase `Coche` podr铆a tener atributos como `color`, `marca`, y `modelo`, y m茅todos como `arrancar()` o `frenar()`. \- \*\*Objeto:\*\* Un objeto es una instancia de una clase. Es un elemento concreto que se crea a partir de una clase, con valores espec铆ficos para sus atributos. Por ejemplo, un objeto de la clase `Coche` podr铆a ser un coche rojo de la marca `Toyota` y modelo `Corolla`. \### 2. \*\*Encapsulamiento\*\* \- El encapsulamiento consiste en ocultar los detalles internos de un objeto y exponer s贸lo lo necesario. Esto se logra mediante el uso de \*\*modificadores de acceso\*\* como `private`, `protected`, y `public`, que controlan qu茅 partes de un objeto pueden ser accedidas o modificadas desde fuera de su clase. Esto protege los datos y asegura que solo se modifiquen de manera controlada. \### 3. \*\*Herencia\*\* \- La herencia permite crear nuevas clases basadas en clases existentes. Una clase que hereda de otra (llamada \*\*subclase\*\* o \*\*clase derivada\*\*) toma los atributos y m茅todos de la clase base (llamada \*\*superclase\*\* o \*\*clase padre\*\*), y puede a帽adir o modificar funcionalidades. Esto fomenta la reutilizaci贸n del c贸digo y la creaci贸n de jerarqu铆as de clases. Por ejemplo, si tenemos una clase `Veh铆culo`, podemos crear una subclase `Coche` que herede de `Veh铆culo`. \### 4. \*\*Polimorfismo\*\* \- El polimorfismo permite que un mismo m茅todo o funci贸n pueda tener diferentes comportamientos seg煤n el objeto que lo invoque. Existen dos tipos principales de polimorfismo: \- \*\*Polimorfismo en tiempo de compilaci贸n (sobrecarga):\*\* Permite definir varios m茅todos con el mismo nombre pero diferentes par谩metros. \- \*\*Polimorfismo en tiempo de ejecuci贸n (sobreescritura):\*\* Permite que una subclase redefina un m茅todo de su superclase para modificar su comportamiento. \### 5. \*\*Abstracci贸n\*\* \- La abstracci贸n consiste en representar conceptos esenciales sin incluir detalles de implementaci贸n espec铆ficos. Las clases abstractas y las interfaces son herramientas que permiten definir m茅todos sin implementarlos, dejando que las clases derivadas proporcionen la implementaci贸n. Esto facilita la creaci贸n de sistemas flexibles y extensibles. \### 6. \*\*Modularidad\*\* \- La POO promueve la divisi贸n del software en m贸dulos o componentes independientes (objetos), que pueden ser desarrollados, testeados y mantenidos por separado, pero que funcionan juntos como un todo coherente. \### 7. \*\*Relaciones entre Objetos\*\* \- Las clases y objetos pueden relacionarse de varias maneras, como: \- \*\*Asociaci贸n:\*\* Una relaci贸n donde un objeto utiliza a otro. \- \*\*Agregaci贸n:\*\* Una forma m谩s d茅bil de asociaci贸n, donde un objeto contiene referencias a otros objetos. \- \*\*Composici贸n:\*\* Una forma m谩s fuerte de agregaci贸n, donde un objeto contiene y controla completamente a otros objetos. \### Ventajas de la POO: \- \*\*Reutilizaci贸n de c贸digo:\*\* Las clases pueden reutilizarse en diferentes partes de un programa o en diferentes proyectos. \- \*\*Facilidad de mantenimiento:\*\* El encapsulamiento y la modularidad facilitan la localizaci贸n y correcci贸n de errores. \- \*\*Facilidad de expansi贸n:\*\* La herencia y la abstracci贸n permiten agregar nuevas funcionalidades sin alterar el c贸digo existente. \- \*\*Flexibilidad:\*\* El polimorfismo permite que el c贸digo sea m谩s flexible y f谩cil de extender. Estos fundamentos hacen de la POO un enfoque poderoso y ampliamente utilizado en el desarrollo de software moderno.
`__init__` es el nombre del m茅todo. Este nombre es especial y est谩 reservado para los constructores en Python
\#nombre de la Clase class <u>Person</u>: ( siempre en may煤scula ) \#constructor ( debe ser un funci贸n def \_\_init\_\_(self,name,age): self.name = name self.age = age Tremenda "Clase" <<<<<<
## **Fundamentos de Programaci贸n Orientada a Objetos en Python** El objetivo de este c贸digo es simular una cuenta bancaria con algunas operaciones b谩sicas, como depositar, retirar dinero y activar o desactivar la cuenta. ### 1. **Clase** `BankAccount`**:** Una **clase** es como un plano o plantilla que define c贸mo ser谩n los objetos que crees a partir de ella. En este caso, la clase `BankAccount` es el plano para crear cuentas bancarias. ### 2. **M茅todo** `__init__`**:** Este m茅todo es el **constructor**, es decir, se ejecuta autom谩ticamente cuando creas una nueva cuenta bancaria. Aqu铆 defines los **atributos** de la cuenta, que son: * `account_holder`: El nombre del due帽o de la cuenta. * `balance`: El saldo de la cuenta. * `is_active`: Un indicador de si la cuenta est谩 activa o no (por defecto es `True`). Es como llenar un formulario cuando abres una cuenta nueva. def \_\_init\_\_(self, account\_holder, balance): self.account\_holder = account\_holder self.balance = balance self.is\_active = True`self` se refiere a la cuenta que est谩s creando. Todo lo que pongas como `self.algo` pertenece a esa cuenta en particular. ### 3. **M茅todo** `deposit`**:** Este m茅todo permite **depositar** dinero en la cuenta. Primero verifica si la cuenta est谩 activa. Si lo est谩, suma el monto al saldo actual y te muestra un mensaje con el nuevo saldo. def deposit(self, amount): if self.is\_active: self.balance += amount print(f"Se ha depositado {amount}. Saldo actual {self.balance}") else: print("No se puede depositar, cuenta inactiva") ### 4. **M茅todo** `withdraw`**:** Este m茅todo permite **retirar** dinero. Primero verifica si la cuenta est谩 activa. Si lo est谩, comprueba si tienes suficiente dinero para retirar. Si es as铆, reduce el saldo; si no, te avisa que no tienes fondos suficientes. def withdraw(self, amount): if self.is\_active: if amount <= self.balance: self.balance -= amount print(f"Se ha retirado {amount}. Saldo actual {self.balance}") else: print("Fondos insuficientes") else: print("No se puede retirar, cuenta inactiva") ### 5. **M茅todos** `deactivate_account` **y** `activate_account`**:** Estos m茅todos permiten **desactivar** o **activar** la cuenta. Cuando una cuenta est谩 desactivada, no se pueden hacer dep贸sitos ni retiros. def deactivate\_account(self): self.is\_active = False print("La cuenta ha sido desactivada") def activate\_account(self): self.is\_active = True print("La cuenta ha sido activada") ### 6. **Crear objetos (cuentas bancarias):** Aqu铆 est谩s creando dos cuentas bancarias: una para Ana y otra para Luis, con saldos iniciales de 500 y 1000, respectivamente. account1 = BankAccount("Ana", 500) account2 = BankAccount("Luis", 1000) ### 7. **Llamar a los m茅todos:** Por 煤ltimo, se hacen operaciones con las cuentas: * **Depositar** dinero en las cuentas de Ana y Luis. * **Desactivar** la cuenta de Ana y luego intentar depositar, lo cual no se permite porque la cuenta est谩 desactivada. account1.deposit(200) account2.deposit(100) account1.deactivate\_account() account1.deposit(50) # Esto no funcionar谩 porque la cuenta est谩 desactivada ### Resumen: 1. **Clase** `BankAccount`: Es el plano para crear cuentas bancarias. 2. **M茅todos**: Son acciones que puedes hacer con una cuenta (depositar, retirar, activar/desactivar). 3. **Objetos**: `account1` y `account2` son ejemplos de cuentas bancarias que creaste usando la clase. Con esto, puedes manejar varias cuentas de banco en el programa, y hacer operaciones b谩sicas como dep贸sitos y retiros. 隆As铆 es c贸mo funciona la POO!
Quisiera compartir un ejercicio que aplica la programaci贸n orientada a objetos. ```js # Enter your date automatic class Enter_Date: def __init__(self, name, years): self.DateN = [] self.name = name self.years = years self.available = True def list_date(self): if self.available: self.DateN.append(self.name) self.DateN.append(self.years) return self.DateN class start: def __init__(self): self.var1 = "" self.var2 = "" def conversation(self): print("Hello today we are going to store data ") print("1.Enter date ") print("2.End ") Enter1 = int(input()) if Enter1 == 1: self.var1 = input("Enter your name: ") self.var2 = input("Enter your age: ") return self.var1, self.var2 else: print("Coming out") income = int(input("Please income how much data going to Enter ")) all_data = [] user1 = None for i in range(income): person1 = start() person1.conversation() user1 = Enter_Date(person1.var1, person1.var2) all_data.append(user1.list_date()) print(all_data) class Rol_family: def __init__(self, data): self.data = data self.occupation = [] def enter_date(self, index): adjusted_index = index - 1 if adjusted_index < len(self.data): name, age = self.data[adjusted_index] print(f"Hola {name} a question") occupation_data = input("What is your occupation in the family? ") self.occupation.append(occupation_data) return occupation_data else: return "Index out of range" def result_date(self, index): if index < len(self.occupation): name, age = self.data[index] print(f"{name} of {age} ages your occupation in family is {self.occupation[index]}") else: print("Index out of range") start_family = Rol_family(all_data) for i in range(len(all_data)): index_to_retrieve = int(input("Enter the index of the data you want to retrieve: ")) print(start_family.enter_date(index_to_retrieve)) print(start_family.occupation) one = 0 while one < len(all_data): start_family.result_date(one) one += 1 ```
El constructor es una funcion propia y especial de las clases
por qu茅 me sale este error ? account1 = Bankaccount("Ana", 300) TypeError: Bankaccount() takes no arguments
```js class Bank_Account: def __init__(self, balance, account_holder): self.balance = balance self.account_holder = account_holder self.is_active = True def deposit(self, ammount): if self.is_active: self.balance += ammount print(f'Depositaste ${ammount}. Total: {self.balance}') else: print('Operaci贸n no realizada. La cuenta no se encuentra activa') def print_balance(self): print(f'Hola, {self.account_holder}, tu balance actual es: ${self.balance}') def withdraw(self, ammount): if self.is_active: if self.balance < ammount: print(f'No puedes retirar una cantida mayor al monto disponible: {self.balance}') else: self.balance -= ammount print(f'Retiraste ${ammount}. Total: ${self.balance}') else: print('Operaci贸n no realizada. La cuenta no se encuentra activa') def activate(self): if self.is_active: print('La cuenta est谩 activa actualmente') else: self.is_active = True print('La cuenta se activ贸 correctamente') def deactivate(self): if not self.is_active: print('La cuenta est谩 inactiva actualmente') else: self.is_active = True print('La cuenta se desactiv贸 correctamente') bank_account1 = Bank_Account(100, 'Edwin') bank_account1.deposit(35) bank_account1.print_balance() bank_account1.withdraw(83) bank_account1.print_balance() bank_account1.activate() bank_account1.deactivate() ```
En Python, `self` se utiliza para referirse a la instancia actual de la clase. Cuando se define un atributo dentro de un m茅todo, como el constructor `__init__`, se precede con `self` para que se asocie espec铆ficamente con el objeto que se est谩 creando. Esto permite acceder y modificar los atributos del objeto en otros m茅todos de la clase. Por ejemplo, `self.nombre` guarda el nombre del objeto y se puede utilizar en cualquier m茅todo de la clase para referirse a ese atributo.
````python class BankAccount: def __init__(self, account_holder, balance): self.account_holder = account_holder self.balance = balance self.is_active = True def deposit(self, amount): if self.is_active: self.balance += amount print(f"Se ha depositado ${amount}. Su saldo actual es de ${self.balance}") else: print("No se puede depositar, cuenta inicativa") def withdraw(self, amount): if self.is_active: if amount <= self.balance: self.balance -= amount print(f"Se ha retirado ${amount}. Su saldo actual es de ${self.balance}") else: print(F"Saldo insuficiente, quieres retirar ${amount} y solo tienes ${self.balance}") else: print("No se puede retirar, cuenta inicativa") def active_account(self): self.is_active = True print("Su cuenta ha sido activada") def deactive_account(self): self.is_active = False print("Su cuenta ha sido desactivada") account1 = BankAccount("Marta", 500) account2 = BankAccount("Jos茅", 740) account1.deposit(200) account2.deposit(100) account1.withdraw(50) account2.withdraw(5000) account1.deactive_account() account1.deposit(100) account1.active_account() account1.deposit(100) ```class BankAccount:聽 聽 def \_\_init\_\_(self, account\_holder, balance):聽 聽 聽 聽 self.account\_holder = account\_holder聽 聽 聽 聽 self.balance = balance聽 聽 聽 聽 self.is\_active = True 聽 聽 def deposit(self, amount):聽 聽 聽 聽 if self.is\_active:聽 聽 聽 聽 聽 聽 self.balance += amount聽 聽 聽 聽 聽 聽 print(f"Se ha depositado ${amount}. Su saldo actual es de ${self.balance}")聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 print("No se puede depositar, cuenta inicativa") 聽 聽 def withdraw(self, amount):聽 聽 聽 聽 if self.is\_active:聽 聽 聽 聽 聽 聽 if amount <= self.balance:聽 聽 聽 聽 聽 聽 聽 聽 self.balance -= amount聽 聽 聽 聽 聽 聽 聽 聽 print(f"Se ha retirado ${amount}. Su saldo actual es de ${self.balance}")聽 聽 聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 聽 聽 print(F"Saldo insuficiente, quieres retirar ${amount} y solo tienes ${self.balance}") 聽 聽聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 print("No se puede retirar, cuenta inicativa") 聽 聽 def active\_account(self):聽 聽 聽 聽 self.is\_active = True聽 聽 聽 聽 print("Su cuenta ha sido activada")聽 聽 聽 聽 def deactive\_account(self):聽 聽 聽 聽 self.is\_active = False聽 聽 聽 聽 print("Su cuenta ha sido desactivada") account1 = BankAccount("Marta", 500)account2 = BankAccount("Jos茅", 740) account1.deposit(200)account2.deposit(100)account1.withdraw(50)account2.withdraw(5000)account1.deactive\_account()account1.deposit(100)account1.active\_account()account1.deposit(100) ````
Muy buena clase. Analogia con Planos(Clases) y Objetos(Casa Construidas) Clases: Son moldes, especificaciones o planos que describen el numero de habitaciones(Atributos) su espacio(Tipo de dato) donde algo se va a guardar muebles(Datos) para hacer cosas con esos muebles en el futuro como pintar muebles vaciasr = (Metodos) ![](https://static.platzi.com/media/user_upload/image-ffa75743-7479-4d02-ab6f-3e2c28dc9947.jpg) Objeto: Son las casas Construidas por una constructora(Sistema operativo/Win/Mac/Linux) y ya disponibles para meter tus muebles con el numero de habitaciones(Atributos) especificados en el plano(Clase) y las acciones(Metodos) que puedes hacer con tus muebles asi que ya puedes meter un mueble negro a una habitacion pintarlo y destruirlo ![](https://static.platzi.com/media/user_upload/image-a177d0cb-9adb-49e1-9935-5deb17e770f6.jpg)
No me queda claro aun 驴cu谩ndo escribir self y cu谩ndo no? es un poco confuso. Gracias.
No hay control de calidad en estos videos 馃槙 revisen porfavor las clases, tienen muchos errores y no se corrigen. (Me dirijo a los editores o encargados etc)
La propiedad `is_active` en el contexto de programaci贸n orientada a objetos en Python es un atributo de tipo booleano. Este tipo de entrada se utiliza para representar el estado de una cuenta (o cualquier entidad) que puede estar activa (True) o inactiva (False). En el ejemplo del curso, `is_active` se utiliza para controlar si se pueden realizar operaciones como dep贸sitos o retiros en una cuenta bancaria.
Un paradigma es un modelo o un conjunto de conceptos y pr谩cticas que definen una forma de entender y abordar un determinado campo de estudio o actividad. En programaci贸n, por ejemplo, un paradigma determina c贸mo se organizan y estructuran los programas. La programaci贸n orientada a objetos, que se mencion贸 en la clase, es un paradigma que organiza el software en "objetos" que representan entidades del mundo real, facilitando la reutilizaci贸n del c贸digo y la modularidad.
\# Atributos: Propiedades que definen al objeto# M茅todos: Acciones que puede realizar el objeto# Clase: Plantilla que contiene los atributos y m茅todos del objeto, con esta plantilla se pueden crear objetos de ese tipo (instanciar) class Persona:聽 聽 def \_\_init\_\_(self, nombre, edad): # \_\_init\_\_ M茅todo que permite instanciar y darle los valores necesarios para inicializarlo聽 聽 聽 聽 self.nombre = nombre # Atributo 1聽 聽 聽 聽 self.edad = edad # Atributo 2聽 聽 聽 聽 def saludar(self): # M茅todo 1聽 聽 聽 聽 print(f'Hola mundo soy {self.nombre}') \# Instanciar (Crear un objeto)persona1 = Persona('Cesar', 21)# Una vez creado un objeto se accede con ' . ' a sus atributos ya sea para consultarlos o modificarlosprint(persona1.nombre)persona1.nombre = 'David'# con ' .() ' se ejecutan los metodos del objetopersona1.saludar()
El error `TypeError: BankAccount() takes no arguments` indica que tu clase `BankAccount` no est谩 configurada para recibir par谩metros en su constructor. Aseg煤rate de que tu constructor en la clase `BankAccount` est茅 definido correctamente para aceptar los argumentos que mencionaste, como `account_holder` y `balance`. Tu constructor deber铆a verse as铆: ```python class BankAccount: def __init__(self, account_holder, balance): self.account_holder = account_holder self.balance = balance self.is_active = True ``` Verifica que la definici贸n de tu clase incluya estos par谩metros.
Uyyy este si est谩 desefiante!! Me gusta! Ya empieza lo chido!!
''' `Hola amig@s, hice un c贸digo para pr谩cticar. Espero que les guste, igual si tienen alguna observaci贸n se los agradecer铆a.` `'''` *class* BankAcountPlant:聽 聽 *def* \_\_init\_\_(self, account\_holder, amount\_btc, amount\_plt):聽 聽 聽 聽 *self*.account\_holder *=* account\_holder聽 聽 聽 聽 *self*.amount\_btc *=* amount\_btc聽 聽 聽 聽 *self*.amount\_plt *=* amount\_plt聽 聽 聽 聽 *self*.is\_active *=* True聽 聽 聽 聽 *def* *GetBalance*(self, coin):聽 聽 聽 聽 *try*: 聽 聽 聽 聽 聽 聽 *if* coin.lower() *==* "bitcoin" *or* coin.lower() *==* "btc" *and* *self*.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"Hola {*self*.account\_holder}, el balance de tu cuenta en bitcoin es: {*self*.amount\_btc} BTC")聽 聽 聽 聽 聽 聽 *elif* coin.lower() *==* "plants coin" *or* 聽coin.lower() *==* "plt" *and* *self*.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"Hola {*self*.account\_holder}, el balance de tu cuenta en plants coin es: {*self*.amount\_plt} PLT")聽 聽 聽 聽 聽 聽 *else*: 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"Cuenta no activa")聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 print("Opcion no valida!") 聽 聽 *def* *Deposit*(self, coin, income):聽 聽 聽 聽 *try*: 聽 聽 聽 聽 聽 聽 *if* *self*.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 *if* coin.lower() *==* "bitcoin" *or* coin.lower() *==* "btc":聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *try*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *self*.amount\_btc *+=* income聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, has depositado {income} BTC. Tu balance en bitcoin es: {*self*.amount\_btc}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print("Deposito invalido")聽 聽 聽 聽 聽 聽 聽 聽 *elif* coin.lower() *==* "plantscoin" *or* coin.lower() *==* "plt":聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *try*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *self*.amount\_plt *+=* income聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, has depositado {income} PLT. Tu balance en plants coin es: {*self*.amount\_plt}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print("Deposito invalido")聽 聽 聽 聽 聽 聽 *else*:聽 聽 聽 聽 聽 聽 聽 聽 print("Cuenta inactiva")聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 print("Opcion no valida!")聽 聽 聽 聽 *def* *Withdraw*(self, coin, outcome):聽 聽 聽 聽 *try*: 聽 聽 聽 聽 聽 聽 *if* *self*.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 *if* coin.lower() *==* "bitcoin" *or* coin.lower() *==* "btc":聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *try*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *if* *self*.amount\_btc *<* outcome:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, no puedes retirar {outcome} BTC. El balance de tu cuenta es: {*self*.amount\_btc}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *else*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *self*.amount\_btc *-=* outcome聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, has retirado {outcome} BTC. Tu balance en bitcoin es: {*self*.amount\_btc}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print("Deposito invalido")聽 聽 聽 聽 聽 聽 聽 聽 *elif* coin.lower() *==* "plants coin" *or* coin.lower() *==* "plt":聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *try*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *if* *self*.amount\_plt *<* outcome:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, no puedes retirar {outcome} PLT. El balance de tu cuenta es: {*self*.amount\_plt} PLT")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *else*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *self*.amount\_plt *-=* outcome聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, has retirado {outcome} PLT. Tu balance en plants coin es: {*self*.amount\_plt}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print("Deposito invalido")聽 聽 聽 聽 聽 聽 *else*:聽 聽 聽 聽 聽 聽 聽 聽 print("Cuenta inactiva")聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 print("Opcion no valida!") 聽 聽 *def* *DeactivateAcount*(self):聽 聽 聽 聽 *self*.is\_active *=* False聽 聽 聽 聽 *def* *ActivateAcount*(self):聽 聽 聽 聽 *self*.is\_active *=* True Account\_1 *=* BankAcountPlant("James Rodriguez", 5.4, 10000) Account\_2 *=* BankAcountPlant("Silvia Rodriguez", 8, 122.89) Account\_1.GetBalance("Bitcoin")Account\_1.GetBalance("Plt") Account\_2.GetBalance("btc")Account\_2.GetBalance("Plants coin") Account\_1.DeactivateAcount()Account\_1.ActivateAcount()Account\_1.Deposit("btc", 0.5)Account\_1.Withdraw("plt", 100) Account\_2.Deposit("plt", 500)Account\_2.Withdraw("PLANTS COIN", 22)
````python class BankAcountPlant: def __init__(self, account_holder, amount_btc, amount_plt): self.account_holder = account_holder self.amount_btc = amount_btc self.amount_plt = amount_plt self.is_active = True def GetBalance(self, coin): try: if coin.lower() == "bitcoin" or coin.lower() == "btc" and self.is_active: print(f"Hola {self.account_holder}, el balance de tu cuenta en bitcoin es: {self.amount_btc} BTC") elif coin.lower() == "plants coin" or coin.lower() == "plt" and self.is_active: print(f"Hola {self.account_holder}, el balance de tu cuenta en plants coin es: {self.amount_plt} PLT") else: print(f"Cuenta no activa") except: print("Opcion no valida!") def Deposit(self, coin, income): try: if self.is_active: if coin.lower() == "bitcoin" or coin.lower() == "btc": try: self.amount_btc += income print(f"{self.account_holder}, has depositado {income} BTC. Tu balance en bitcoin es: {self.amount_btc}") except: print("Deposito invalido") elif coin.lower() == "plantscoin" or coin.lower() == "plt": try: self.amount_plt += income print(f"{self.account_holder}, has depositado {income} PLT. Tu balance en plants coin es: {self.amount_plt}") except: print("Deposito invalido") else: print("Cuenta inactiva") except: print("Opcion no valida!") def Withdraw(self, coin, outcome): try: if self.is_active: if coin.lower() == "bitcoin" or coin.lower() == "btc": try: if self.amount_btc < outcome: print(f"{self.account_holder}, no puedes retirar {outcome} BTC. El balance de tu cuenta es: {self.amount_btc}") else: self.amount_btc -= outcome print(f"{self.account_holder}, has retirado {outcome} BTC. Tu balance en bitcoin es: {self.amount_btc}") except: print("Deposito invalido") elif coin.lower() == "plants coin" or coin.lower() == "plt": try: if self.amount_plt < outcome: print(f"{self.account_holder}, no puedes retirar {outcome} PLT. El balance de tu cuenta es: {self.amount_plt} PLT") else: self.amount_plt -= outcome print(f"{self.account_holder}, has retirado {outcome} PLT. Tu balance en plants coin es: {self.amount_plt}") except: print("Deposito invalido") else: print("Cuenta inactiva") except: print("Opcion no valida!") def DeactivateAcount(self): self.is_active = False def ActivateAcount(self): self.is_active = True Account_1 = BankAcountPlant("James Rodriguez", 5.4, 10000) Account_2 = BankAcountPlant("Silvia Rodriguez", 8, 122.89) Account_1.GetBalance("Bitcoin") Account_1.GetBalance("Plt") Account_2.GetBalance("btc") Account_2.GetBalance("Plants coin") Account_1.DeactivateAcount() Account_1.ActivateAcount() Account_1.Deposit("btc", 0.5) Account_1.Withdraw("plt", 100) Account_2.Deposit("plt", 500) Account_2.Withdraw("PLANTS COIN", 22) ```*class* BankAcountPlant:聽 聽 *def* \_\_init\_\_(self, account\_holder, amount\_btc, amount\_plt):聽 聽 聽 聽 *self*.account\_holder *=* account\_holder聽 聽 聽 聽 *self*.amount\_btc *=* amount\_btc聽 聽 聽 聽 *self*.amount\_plt *=* amount\_plt聽 聽 聽 聽 *self*.is\_active *=* True聽 聽 聽 聽 *def* *GetBalance*(self, coin):聽 聽 聽 聽 *try*: 聽 聽 聽 聽 聽 聽 *if* coin.lower() *==* "bitcoin" *or* coin.lower() *==* "btc" *and* *self*.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"Hola {*self*.account\_holder}, el balance de tu cuenta en bitcoin es: {*self*.amount\_btc} BTC")聽 聽 聽 聽 聽 聽 *elif* coin.lower() *==* "plants coin" *or* 聽coin.lower() *==* "plt" *and* *self*.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"Hola {*self*.account\_holder}, el balance de tu cuenta en plants coin es: {*self*.amount\_plt} PLT")聽 聽 聽 聽 聽 聽 *else*: 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"Cuenta no activa")聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 print("Opcion no valida!") 聽 聽 *def* *Deposit*(self, coin, income):聽 聽 聽 聽 *try*: 聽 聽 聽 聽 聽 聽 *if* *self*.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 *if* coin.lower() *==* "bitcoin" *or* coin.lower() *==* "btc":聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *try*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *self*.amount\_btc *+=* income聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, has depositado {income} BTC. Tu balance en bitcoin es: {*self*.amount\_btc}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print("Deposito invalido")聽 聽 聽 聽 聽 聽 聽 聽 *elif* coin.lower() *==* "plantscoin" *or* coin.lower() *==* "plt":聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *try*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *self*.amount\_plt *+=* income聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, has depositado {income} PLT. Tu balance en plants coin es: {*self*.amount\_plt}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print("Deposito invalido")聽 聽 聽 聽 聽 聽 *else*:聽 聽 聽 聽 聽 聽 聽 聽 print("Cuenta inactiva")聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 print("Opcion no valida!")聽 聽 聽 聽 *def* *Withdraw*(self, coin, outcome):聽 聽 聽 聽 *try*: 聽 聽 聽 聽 聽 聽 *if* *self*.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 *if* coin.lower() *==* "bitcoin" *or* coin.lower() *==* "btc":聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *try*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *if* *self*.amount\_btc *<* outcome:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, no puedes retirar {outcome} BTC. El balance de tu cuenta es: {*self*.amount\_btc}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *else*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *self*.amount\_btc *-=* outcome聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, has retirado {outcome} BTC. Tu balance en bitcoin es: {*self*.amount\_btc}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print("Deposito invalido")聽 聽 聽 聽 聽 聽 聽 聽 *elif* coin.lower() *==* "plants coin" *or* coin.lower() *==* "plt":聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *try*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *if* *self*.amount\_plt *<* outcome:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, no puedes retirar {outcome} PLT. El balance de tu cuenta es: {*self*.amount\_plt} PLT")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *else*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *self*.amount\_plt *-=* outcome聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(*f*"{*self*.account\_holder}, has retirado {outcome} PLT. Tu balance en plants coin es: {*self*.amount\_plt}")聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print("Deposito invalido")聽 聽 聽 聽 聽 聽 *else*:聽 聽 聽 聽 聽 聽 聽 聽 print("Cuenta inactiva")聽 聽 聽 聽 *except*:聽 聽 聽 聽 聽 聽 print("Opcion no valida!") 聽 聽 *def* *DeactivateAcount*(self):聽 聽 聽 聽 *self*.is\_active *=* False聽 聽 聽 聽 *def* *ActivateAcount*(self):聽 聽 聽 聽 *self*.is\_active *=* True Account\_1 *=* BankAcountPlant("James Rodriguez", 5.4, 10000) Account\_2 *=* BankAcountPlant("Silvia Rodriguez", 8, 122.89) Account\_1.GetBalance("Bitcoin")Account\_1.GetBalance("Plt") Account\_2.GetBalance("btc")Account\_2.GetBalance("Plants coin") Account\_1.DeactivateAcount()Account\_1.ActivateAcount()Account\_1.Deposit("btc", 0.5)Account\_1.Withdraw("plt", 100) Account\_2.Deposit("plt", 500)Account\_2.Withdraw("PLANTS COIN", 22)```js ````
gracias, muy buena y clara clase
class Bankaccount:聽 聽 def \_\_init\_\_(self, client, balance):聽 聽 聽 聽 *self*.client = client聽 聽 聽 聽 *self*.balance = balance聽 聽 聽 聽 *self*.active\_account = True 聽 聽 def deposit(self, amount):聽 聽 聽 聽 if *self*.active\_account:聽 聽 聽 聽 聽 聽 *self*.balance += amount聽 聽 聽 聽 聽 聽 print(f"""You have deposited an amount of ${amount}, to a balance of ${*self*.balance - amount}. Your current balance is ${*self*.balance}.""")聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 print("This account is not active so you cannot perform any transactions here.") 聽 聽 def withdraw(self, amount):聽 聽 聽 聽 if *self*.active\_account:聽 聽 聽 聽 聽 聽 if *self*.balance >= amount:聽 聽 聽 聽 聽 聽 聽 聽 *self*.balance -= amount聽 聽 聽 聽 聽 聽 聽 聽 print(f"You have withdrawn an amount of ${amount}. Your current balance is ${*self*.balance}")聽 聽 聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 聽 聽 print(f"Insufficient funds. The maximum amount you can withdraw is: ${*self*.balance}.") 聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 print("This account is not active.") 聽 聽 def deactivate\_account(self):聽 聽 聽 聽 if *self*.active\_account == True:聽 聽 聽 聽 聽 聽 *self*.active\_account = False聽 聽 聽 聽 聽 聽 print(f"The account of {*self*.client}, has been deactivated successfully") 聽 聽 def reactivate\_account(self):聽 聽 聽 聽 if *self*.active\_account == False:聽 聽 聽 聽 聽 聽 *self*.active\_account = True聽 聽 聽 聽 聽 聽 print(f"The account of {*self*.client} has been activated.") account1 = Bankaccount("Clint", 700)account2 = Bankaccount("Fred", 1100) ```js ``` ```python class Bankaccount: def __init__(self, client, balance): self.client = client self.balance = balance self.active_account = True def deposit(self, amount): if self.active_account: self.balance += amount print(f"""You have deposited an amount of ${amount}, to a balance of ${self.balance - amount}. Your current balance is ${self.balance}.""") else: print("This account is not active so you cannot perform any transactions here.") def withdraw(self, amount): if self.active_account: if self.balance >= amount: self.balance -= amount print(f"You have withdrawn an amount of ${amount}. Your current balance is ${self.balance}") else: print(f"Insufficient funds. The maximum amount you can withdraw is: ${self.balance}.") else: print("This account is not active.") def deactivate_account(self): if self.active_account == True: self.active_account = False print(f"The account of {self.client}, has been deactivated successfully") def reactivate_account(self): if self.active_account == False: self.active_account = True print(f"The account of {self.client} has been activated.") account1 = Bankaccount("Clint", 700) account2 = Bankaccount("Fred", 1100) ```
La sentencia `with` en Python se utiliza para simplificar el manejo de recursos, como archivos. Su principal ventaja es que garantiza que los recursos se liberen autom谩ticamente despu茅s de su uso, incluso si ocurre un error. Por ejemplo, al abrir un archivo: ```python with open('archivo.txt', 'r') as file: contenido = file.read() ``` Aqu铆, el archivo se cierra autom谩ticamente al finalizar el bloque, evitando fugas de recursos. Esta pr谩ctica mejora la legibilidad y la eficiencia del c贸digo.
```js #Fundamentos de Programaci贸n Orientada a Objetos en Python class person: def __init__(self,name, age): self.name = name self.age = age def greet(self): print(f"Hola , mi nombre es {self.name} y tengo,{self.age},") person1 = person('Alexis', 37) person2 = person('Luis', 23) person1.greet() person2.greet() ```#Fundamentos de Programaci贸n Orientada a Objetos en Pythonclass person:聽 聽 def \_\_init\_\_(self,name, age):聽 聽 聽 聽 self.name = name聽 聽 聽 聽 self.age = age聽 聽 聽 聽 聽 聽 def greet(self):聽 聽 聽 聽 print(f"Hola , mi nombre es {self.name} y tengo,{self.age},")聽 聽 聽 聽 聽 聽 聽 聽 person1 = person('Alexis', 37)person2 = person('Luis', 23) person1.greet()person2.greet()
Una clase en Python es como un molde o plantilla y ese molden tiene , digamos que ese molde es una figura humana,tine brazo tiene pierna, tieno ojo , tiene color
Fundamentos de Programaci贸n Orientada a Objetos en Python: Para crear una clase de objeto se usa class \_\_init\_\_ : \_\_init\_\_ se usa para inicializar atributos de un objeto. Se ejecuta autom谩ticamente al crear una instancia. Es una parte clave de la programaci贸n orientada a objetos en Python. Hace que el c贸digo sea m谩s limpio, organizado y f谩cil de entender. Crear objetos para la clase Person: class Person: def \_\_init\_\_(self, name, age): self.name = name self.age = age person1 = Person("Ana", 30) person2 = Person("Luis", 25) withdraw = retirar
Hola! Soy Sasha del futuro (Que ya termin贸 el modulo de POO) Les quiero dejar mis notas sobre POO en Python, (con cosas extras que no explican ac谩) Espero les sirva para entender mejor POO porque si es bastante enredado, pero creo que ya lo entend铆 y ese entendimiento lo plasme en mis notas! <https://sashanclrp.notion.site/Curso-Profesional-de-Python-148f47adcb91809c8d82cfc8af1b6edb?pvs=4>
`# Define the Car class` `class Car:` ` def __init__(self, make, model, year):` ` # Attributes` ` self.make = make` ` self.model = model` ` self.year = year` ` self.is_running = False` ` # Method to start the car` ` def start(self):` ` if not self.is_running:` ` self.is_running = True` ` print(f"The {self.make} {self.model} is now running.")` ` else:` ` print(f"The {self.make} {self.model} is already running!")` ` # Method to stop the car` ` def stop(self):` ` if self.is_running:` ` self.is_running = False` ` print(f"The {self.make} {self.model} has stopped.")` ` else:` ` print(f"The {self.make} {self.model} is already off.")` ` # Method to display car details` ` def display_info(self):` ` print(f"{self.year} {self.make} {self.model}")` `# Create an instance of the Car class` `my_car = Car("Toyota", "Corolla", 2022)` `# Use the class methods` `my_car.display_info() # Output: 2022 Toyota Corolla` `my_car.start() # Output: The Toyota Corolla is now running.` `my_car.stop() # Output: The Toyota Corolla has stopped.`
\# Define the Car class class Car: def \_\_init\_\_(self, make, model, year): \# Attributes self.make = make self.model = model self.year = year self.is\_running = False \# Method to start the car def start(self): if not self.is\_running: self.is\_running = True print(f"The {self.make} {self.model} is now running.") else: print(f"The {self.make} {self.model} is already running!") \# Method to stop the car def stop(self): if self.is\_running: self.is\_running = False print(f"The {self.make} {self.model} has stopped.") else: print(f"The {self.make} {self.model} is already off.") \# Method to display car details def display\_info(self): print(f"{self.year} {self.make} {self.model}") \# Create an instance of the Car class my\_car = Car("Toyota", "Corolla", 2022) \# Use the class methods my\_car.display\_info() # Output: 2022 Toyota Corolla my\_car.start() # Output: The Toyota Corolla is now running. my\_car.stop() # Output: The Toyota Corolla has stopped.
Decid铆 cambiar un poco el ejercicio, ahora es una cuenta de ahorros. ```python class Ahorro: def __init__(self, nombre, cuenta, saldo_inicial): self.nombre = nombre self.cuenta = cuenta self.saldo_inicial = saldo_inicial self.estado = True def depositar(self, cuenta, monto): if self.estado == True: if self.cuenta == cuenta: self.saldo_inicial += monto print(f"El monto ingresado es $ {monto} y su saldo total es $ {self.saldo_inicial}") else: print("Error: La cuenta ingresada no existe") else: print("Error: Su cuenta esta inactiva") def retirar(self, cuenta, monto): if self.estado == True: if self.cuenta == cuenta: if self.saldo_inicial >= monto: self.saldo_inicial -= monto print(f"Tu saldo final es $ {self.saldo_inicial} haz retirado $ {monto}") else: print("Error: El saldo de tu cuenta es menor al monto que intentas retirar") else: print("Error: Esta cuenta no es correcta") else: print("Error: Tu cuenta esta desactivada") def congelarCuenta(self, cuenta): if self.cuenta == cuenta: self.estado = False print("Estado: Cuenta desactivada exitosamente") else: print("Error: Esta cuenta no existe") def descongelarCuenta(self, cuenta): if self.cuenta == cuenta: self.estado = True print("Estado: Cuenta activada exitosamente") else: print("Error: Esta cuenta no existe") cuenta1 = Ahorro("Cristian Mora", 12345, 500) cuenta1.depositar(12345, 100) cuenta1.retirar(12345, 50) cuenta1.congelarCuenta(12345) cuenta1.depositar(12345, 500) cuenta1.descongelarCuenta(12345) cuenta1.depositar(12345, 400) ```
Para El caso practico de la clase; En cuanto a las funciones de desactivar y activar la cuenta. Yo preferir铆a crear una sola funci贸n llamada change_state(self) y preguntar dentro de la funci贸n si es true la convierta en false y si es false la convierta en true. De tal manera se llama una sola y no se requiere la validaci贸n de si esta o no desactivada para desactivar mismo.
Que tal chicos! Me dejo intrigado el porque creamos un metodo llamado **\_\_init\_\_** y nunca lo llamamos, estuve investigando y (espero explicarme bien) resulta que este metodo es importantisimo para que todos los atributos de la clase (name y age o account\_holder y balance), se definan desde la creacion de los objetos (person1 = Person('Carlitos',20)) y posteriormente se puedan utilizar estos atributos mas adelante dentro de los metodos (person1.greet()) Asi que, si por alguna razon nos saltamos la creacion del metodo \_\_**init**\_\_ no estaremos asignandole atributos a la clase, seria como crear un ser humano y no asignarle atributos como su nombre o su edad o su estatura y mas adelante no podriamos ni asignar ni llamar estos datos. Un punto extra es que este metodo init, en ejecucion de codigo, se llama cuando estamos creando los objetos de la clase.
No es obligatorio usar `def __init__` al construir una clase, pero es una buena pr谩ctica para inicializar atributos. El `self` se refiere a la instancia de la clase y es necesario para acceder a sus atributos y m茅todos. Sin `self`, no podr铆as referenciar los datos de la instancia.
Me sale este error: account1 = Bankaccount("Ana", 300) TypeError: Bankaccount() takes no arguments
Les comparto mi aporte con el ejercicio de la cuenta bancaria: ```python class BankAccount: def __init__(self, holder_name:str, balance:int): self.holder_name = holder_name self.balance = balance self.status = True print(f"Se ha creado la cuenta de: {self.holder_name}, con un saldo inicial de: {self.balance}") def deactivate(self): self.status = False print(f"Se ha desactivado la cuenta bancaria") def activate(self): self.status = True print(f"Se ha activado la cuenta bancaria") def deposit(self,amount:int): if amount > 0: self.balance += amount print(f"Se ha depositado un total de {amount}, el nuevo saldo es: {self.balance}") else: print(f"Error en el deposito!, El monto debe ser mayor a $0, el saldo actual es {self.balance}") def withdraw(self,amount:int): if self.balance <= 0: print(f"Se dispone de un saldo no apto para generar retiros, el saldo actual de la cuenta es {self.balance}") elif amount <= 0: print(f"Error en el retiro!, El monto a retirar debe ser mayor a $0, el saldo actual de la cuenta es {self.balance}") elif amount <= self.balance: self.balance -= amount print(f"Se ha retirado un total de {amount}, el nuevo saldo es: {self.balance}") else: print(f"Error en el retiro!, El monto a retirar debe ser a lo sumo igual que el saldo disponible, el saldo actual de la cuenta es {self.balance}") ```Espero les sea de utilidad!
Hola! Les comparto el c贸digo de la clase con algunas mejors en detalles y comentarios. ```python class Person: # Constructor, es una funcion propia y especial de las clases # En esta definimos los atributos principales def __init__(self, name, age): self.name = name self.age = age def greet(self): print(f"Hola, mi nombre es {self.name} y tengo {self.age} a帽os") person1 = Person("Sara", 31) person2 = Person("Juan", 25) person1.greet() person2.greet() ``````python class BankAccount(): def __init__(self, account_number, balance): self.account_number = account_number self.balance = balance self.is_active = True def deposit(self, amount): if self.is_active: self.balance += amount print(f"Dep贸sito de ${amount} realizado. Nuevo saldo: ${self.balance}") else: print("La cuenta est谩 inactiva. No se puede realizar el dep贸sito.") def withdraw(self, amount): if self.is_active: if self.balance >= amount: self.balance -= amount print(f"Retiro de ${amount} realizado. Nuevo saldo: ${self.balance}") else: print("Saldo insuficiente para realizar el retiro.") else: print("La cuenta est谩 inactiva. No se puede realizar el retiro.") def deactivate_account(self): if self.is_active: self.is_active = False print("La cuenta ha sido desactivada.") else: print("La cuenta ya est谩 inactiva.") def activate_account(self): if not self.is_active: self.is_active = True print("La cuenta ha sido activada.") else: print("La cuenta ya est谩 activa.") # Creacion de Objetos account1 = BankAccount("123456789", 1000) account2 = BankAccount("987654321", 500) # Llamado a M茅todos account1.deposit(500) account2.deposit(300) account1.withdraw(200) account2.withdraw(1600) account1.deactivate_account() account1.deposit(1000) account2.activate_account() ```
Falt贸 este pedacito de c贸diggo XD else:聽 print("Fondo insuficiente")
Consulta chicos: Para lograr convertirse en un Backend Developer esta bien emepezar por python ? y luego con que deberia seguir ? muchas gracias!!!
La programaci贸n orientada a objetos (POO) modela soluciones en t茅rminos de "objetos", los cuales representan tanto cosas f铆sicas del mundo real como conceptos abstractos. Este enfoque se basa en la idea de que los objetos interact煤an entre s铆 a trav茅s de sus propiedades (datos) y comportamientos (funciones) , El objetivo principal es organizar el c贸digo de manera modular, reutilizable y mantenible, facilitando la construcci贸n de sistemas complejos.
`self.is_active = True` Esto es una variable de instancia, como bien dijo la profesora esta no se recibe como parametro pero si genera una copia en cada instancia, permitiendo que se pueda modificar, en este caso de True a False en cualquier momento, diferente a las variables de clase que son las que se crean fuera de las instancias y fuera del constructor,tambien se genera una copia en cada instancia pero a diferencia si se cambia el valor de esta se cambia el valor en todas las instancias.
Muy buena explicacion profe
Hize una peque帽a mejora al ejercicio de la clase, para que se puedan hacer transferencias. class BankAccount:聽 聽 def \_\_init\_\_(self, name, balance):聽 聽 聽 聽 self.name = name聽 聽 聽 聽 self.balance = balance聽 聽 聽 聽 self.is\_activa = True聽 聽 聽 聽 聽 聽 def deposit(self, amount):聽 聽 聽 聽 if self.is\_activa:聽 聽 聽 聽 聽 聽 self.balance += amount # Con esto se suma el monto al balance聽 聽 聽 聽 聽 聽 print(f'Se ha hecho un deposito de {amount} a tu cuenta {self.name}, quedando un saldo de {self.balance} ')聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 print('La cuenta no est谩 activa, o no existe')聽 聽 聽 聽 聽 聽 聽 聽 def withdraw(self, amount):聽 聽 聽 聽 if self.is\_activa:聽 聽 聽 聽 聽 聽 if self.balance >= amount:聽 聽 聽 聽 聽 聽 聽 聽 self.balance -= amount聽 聽 聽 聽 聽 聽 聽 聽 print(f"Se ha hecho un retiro de tu cuenta {self.name} por un valor de {amount}, quedando un saldo de {self.balance}")聽 聽 聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 聽 聽 print('Error interno, ---> No tienes suficiente saldo <---')聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 def deactivate(self):聽 聽 聽 聽 self.is\_activa = False聽 聽 聽 聽 print(f'{self.name}, tu cuenta ha sido desactivada')聽 聽 聽 聽 聽 聽 def activate(self):聽 聽 聽 聽 self.is\_activa = True聽 聽 聽 聽 print(f'{self.name}, tu cuenta ha sido activada')聽 聽 聽 聽 # Crear transferencias entre cuentaas聽 聽 def transfer(self, amount, account):聽 聽 聽 聽 if self.is\_activa: #Si la cuenta est谩 activa聽 聽 聽 聽 聽 聽 if self.balance >= amount:聽 聽 聽 聽 聽 聽 聽 聽 self.balance -= amount聽 聽 聽 聽 聽 聽 聽 聽 account.balance += amount聽 聽 聽 聽 聽 聽 聽 聽 print(f'Que Nota, {self.name} te ha transferido ${amount} {account.name}, quedaste con {account.balance}!!')聽 聽 聽 聽 聽 聽 cuenta1 = BankAccount ('David', 10000)cuenta2 = BankAccount ('Paula', 200)cuenta3 = BankAccount ('Luisa', 50000) \# Llamar a los m茅todos de la clase BankAccountcuenta1.deposit(5000)cuenta2.withdraw(10000)cuenta3.deactivate()cuenta3.deposit(10000)cuenta2.withdraw(20)cuenta1.deposit(1000)cuenta3.activate()cuenta3.deposit(10000) cuenta3.transfer(30000, cuenta1) ```js class BankAccount: def __init__(self, name, balance): self.name = name self.balance = balance self.is_activa = True def deposit(self, amount): if self.is_activa: self.balance += amount # Con esto se suma el monto al balance print(f'Se ha hecho un deposito de {amount} a tu cuenta {self.name}, quedando un saldo de {self.balance} ') else: print('La cuenta no est谩 activa, o no existe') def withdraw(self, amount): if self.is_activa: if self.balance >= amount: self.balance -= amount print(f"Se ha hecho un retiro de tu cuenta {self.name} por un valor de {amount}, quedando un saldo de {self.balance}") else: print('Error interno, ---> No tienes suficiente saldo <---') def deactivate(self): self.is_activa = False print(f'{self.name}, tu cuenta ha sido desactivada') def activate(self): self.is_activa = True print(f'{self.name}, tu cuenta ha sido activada') # Crear transferencias entre cuentaas def transfer(self, amount, account): if self.is_activa: #Si la cuenta est谩 activa if self.balance >= amount: self.balance -= amount account.balance += amount print(f'Que Nota, {self.name} te ha transferido ${amount} {account.name}, quedaste con {account.balance}!!') cuenta1 = BankAccount ('David', 10000) cuenta2 = BankAccount ('Paula', 200) cuenta3 = BankAccount ('Luisa', 50000) # Llamar a los m茅todos de la clase BankAccount cuenta1.deposit(5000) cuenta2.withdraw(10000) cuenta3.deactivate() cuenta3.deposit(10000) cuenta2.withdraw(20) cuenta1.deposit(1000) cuenta3.activate() cuenta3.deposit(10000) cuenta3.transfer(30000, cuenta1) ```
Las **funciones** que est谩n dentro de una clase en Python, se les llama **m茅todos**. Un m茅todo es una funci贸n que est谩 asociada a un objeto o instancia de una clase. Los m茅todos permiten que los objetos interact煤en con sus propios atributos y con otros objetos. Existen tipos de m茅todos como: **M茅todos de instancia**: Estos son los m茅todos m谩s comunes. Se definen con la palabra clave `self` como su primer par谩metro, que hace referencia a la instancia actual de la clase. **M茅todos de clase (**`@classmethod`**)**: Estos m茅todos no est谩n asociados a una instancia espec铆fica, sino a la clase en s铆. El primer par谩metro es `cls`, que representa la clase. **M茅todos est谩ticos (**`@staticmethod`**)**: Son funciones que pertenecen a una clase, pero no interact煤an con la clase ni con las instancias. No requieren el par谩metro `self` ni `cls`.
Seria prudente tambien indicar que mensaje mostrar cuando tiene fondos insuficientes: `def withdrawl(self, amount):聽 聽 聽 聽 if self.is_active:聽 聽 聽 聽 聽 聽 if amount <= self.balance:聽 聽 聽 聽 聽 聽 聽 聽 self.balance -= amount聽 聽 聽 聽 聽 聽 聽 聽 print(f"Se ha retirado {amount} y el saldo actual es {self.balance}")聽 聽 聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 聽 聽 print(f"No se pudo retirar los {amount}, tu saldo es insuficiente, tu saldo actual es de {self.balance}")`
![](https://static.platzi.com/media/user_upload/image-4bdefaf0-e928-41d4-b300-7195acc03654.jpg)
Me gust贸 el ejercicio que hice, lo dejo por ac谩: ```python class BankAccount: def __init__(self, account_holder, balance): self.account_holder = account_holder self.balance = balance self.is_active = True def deposit(self, amount): if self.is_active: self.balance += amount print(f'Se ha depositado {amount}. El saldo actual es: {self.balance}') else: print('La cuenta no esta activia, no se puede depositar.') def withdraw(self, amount): if self.is_active: if amount <= self.balance: self.balance -= amount print(f'Se ha retirado {amount}. El saldo actual es: {self.balance}') else: print('Saldo insuficiente, no se puede retirar esa cantidad.') else: print('La cuenta no esta activa, no se puede retirar.') def deactivate(self): self.is_active = False print(f'La cuenta de {self.account_holder} ha sido desactivada') def activate(self): self.is_active = True print(f'La cuenta de {self.account_holder} ha sido activada') account1 = BankAccount('Ana', 500) account2 = BankAccount('Luis', 1200) # Llamando a los metodos account1.deposit(2000) account2.deposit(500) account1.deactivate() account1.withdraw(300) account1.activate() account1.withdraw(30000) #en python todo es una clase ```
Muchas gracias, qu茅 clase tan clara. Luego de meses siento que di un gran salto en cuanto a entender POO
<https://github.com/JimcostDev/python_programming_fundamentals/tree/master/05_poo> ## Pilares de la Programaci贸n Orientada a Objetos La **POO** se basa en cuatro pilares fundamentales. Estos conceptos han evolucionado con el tiempo y se han adaptado a diferentes lenguajes de programaci贸n, pero las bases siguen siendo las mismas: * **Abstracci贸n** * **Encapsulamiento** * **Herencia** * **Polimorfismo**
Apuntes y codigo. El ejercicio de la cuenta de banco viene en comentarios. ```python # POO - Programaci贸n Orientada a Objetos # Objeto: Instancia de una clase que contiene datos y comportamientos espec铆ficos. # Clase: Plantilla que define las propiedades (atributos) y comportamientos (m茅todos) de los objetos. # Atributo: Variable dentro de una clase que almacena informaci贸n sobre el objeto. # M茅todo: Funci贸n definida dentro de una clase que describe las acciones que un objeto puede realizar. # Constructor: M茅todo especial en una clase (__init__) que se llama autom谩ticamente al crear un nuevo objeto para inicializar sus atributos. # Par谩metro: Variable en una funci贸n o m茅todo que recibe un valor al ser llamada para usar dentro de esa funci贸n o m茅todo. #Ejercicios POO class Person: # Definimos una nueva clase, una buena practica es utilizar mayuscalas al principio aqui def __init__(self,name,age): # Es una funcion particular que define el costructor, Self es para que se llame a el mismo self.name = name # Al nuevo objeto "Person" , le da el atributo de que tiene "name"(nombre) y aqui se lo asigna self.age = age # Lo mismo pero con "age" (edad) # El constructor ya asigno nuevos atributos al objeto o clase de los parametros "name" y "age" def greet(self): # Creamos / definimso una funcion para saludar #print(f"Hola,mi nombre es {self.name} y tengo {self.age}") print("Hola, mi nombre es", self.name, "y tengo", self.age) person1 = Person("Ana",33) person2 = Person("Luis",25) person1.greet() person2.greet() ```
```python class BankAccount: def __init__(self, account_holder, balance): self.account_holder = account_holder self.balance = balance self.is_active = True def deposit(self, amount): #Depositar if self.is_active: self.balance += amount print(f"Se a depositado {amount} en la cuenta de {self.account_holder}. \nSaldo actual es: {self.balance}") else: print(f"No se puede depositar, cuenta de {self.account_holder} est谩 inactiva") def withdraw(self, amount): #Retirar if self.is_active: if amount <= self.balance: self.balance -= amount print (f"Se ha retirado {amount} de la cuenta de {self.account_holder}. \n Saldo actual es: {self.balance}") else: print(f"Saldo insuficiente para retirar, su saldo actual es {self.balance} bs.") else: print(f"La cuenta de {self.account_holder} esta desactivada \nNo se puede retirar") def desactive_account(self): self.is_active = False print("Cuenta desactivada") def active_account(self): self.is_active = True print("Cuenta Activada Correctamente") account1 = BankAccount("Ana", 500) account2 = BankAccount("Luis", 1000) #Llamada a los m茅todos account1.deposit(200) account2.deposit(100) account1.desactive_account() account1.deposit(50) account1.active_account() account1.deposit(50) account2.desactive_account() account2.withdraw(1800) ```class BankAccount:聽 聽 def \_\_init\_\_(self, account\_holder, balance):聽 聽 聽 聽 self.account\_holder = account\_holder聽 聽 聽 聽 self.balance = balance聽 聽 聽 聽 self.is\_active = True聽 聽 def deposit(self, amount): #Depositar聽 聽 聽 聽 if self.is\_active:聽 聽 聽 聽 聽 聽 self.balance += amount聽 聽 聽 聽 聽 聽 print(f"Se a depositado {amount} en la cuenta de {self.account\_holder}. \nSaldo actual es: {self.balance}")聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 print(f"No se puede depositar, cuenta de {self.account\_holder} est谩 inactiva")聽 聽 def withdraw(self, amount): #Retirar聽 聽 聽 聽 if self.is\_active:聽 聽 聽 聽 聽 聽 if amount <= self.balance:聽 聽 聽 聽 聽 聽 聽 聽 self.balance -= amount聽 聽 聽 聽 聽 聽 聽 聽 print (f"Se ha retirado {amount} de la cuenta de {self.account\_holder}. \n Saldo actual es: {self.balance}")聽 聽 聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 聽 聽 print(f"Saldo insuficiente para retirar, su saldo actual es {self.balance} bs.")聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 print(f"La cuenta de {self.account\_holder} esta desactivada \nNo se puede retirar") 聽 聽 聽 聽聽 聽 def desactive\_account(self): 聽 聽 聽 聽 self.is\_active = False聽 聽 聽 聽 print("Cuenta desactivada") 聽 聽 def active\_account(self):聽 聽 聽 聽 self.is\_active = True聽 聽 聽 聽 print("Cuenta Activada Correctamente")account1 = BankAccount("Ana", 500)account2 = BankAccount("Luis", 1000) \#Llamada a los m茅todos account1.deposit(200)account2.deposit(100) account1.desactive\_account()account1.deposit(50) account1.active\_account()account1.deposit(50) account2.desactive\_account()account2.withdraw(1800)
Les presento mi ejemplo practico: ![]()![](https://static.platzi.com/media/user_upload/image-603a71c7-e805-4295-989d-33eb07867b99.jpg)
**Resumen:** **Programaci贸n Orientada a Objetos** Es un paradigma de la programaci贸n que nos dice que el software se debe organizar en objetos que son instancias de clases. Las clases son una plantilla gen茅rica, como la clase Persona, esta clase aplicar铆a a cualquier ser humano ya que contendr铆a, nombre, apellido, edad, estatura como atributos por ejemplo y m茅todos como caminar, sentarse, re铆r etc. Por otro lado los objetos son muestras particulares de la clase, es decir, una clase instanciada, esta puede contener adicional a los atributos y m茅todos de la clase, nuevos atributos y m茅todos propios. Los <u>m茅todos </u>son funciones propias de las clases y los <u>atributos</u>, de igual forma son variables propias de la clase La clase requiere de un concepto llamado <u>constructor</u> que sirve para inicializar el objeto, a este constructor se le pueden a帽adir parametros, se define como una funci贸n con la palabra reservada \_\_init\_\_ y como parametro principal debe incluirse la palabra reservada self que indica que esa funci贸n solo afectara al objeto que creamos lo que genera que sean independiente entre ellos. ```python #Sin parametros class Coche: def __init__(self): pass #Con parametros class Coche: def __init__(self, matricula, marca, velocidad_max, automatico): self.matricula = matricula self.marca = marca self.velocidad_max = velocidad_max self.automatico = automatico ```
```python #Ejercicios de Clase POO class Person: def __init__(self,name,age): self.name = name self.age = age def greet(self): print(f"Hola,mi nombre es {self.name} y tengo {self.age}") person1 = Person("Ana",33) person2 = Person("Luis",25) person1.greet() person2.greet() class BankAccount: def __init__(self,account_holder, balance): self.account_holder = account_holder self.balance = balance self.is_active = True def deposit(self,amount): if self.is_active: self.balance += amount print(f"Se ha depositado {amount}. Saldo actual: {self.balance}") else: print("No se puede depositar, Cuenta inactiva") def withdraw(self,amount): if self.is_active: if amount <= self.balance: self.balance -= amount print(f"Se ha retirado {amount}. Saldo actual: {self.balance}") else: print("No se puede depositar, Cuenta inactiva") def deactivate_account(self): self.is_active = False print(f"La cuenta ha sido desactivada.") def activate_account(self): self.is_active = True print(f"La cuenta ha sido activada.") account1 = BankAccount("Ana",500) account2 = BankAccount("Luis",1000) #Llamada a los m茅todos. account1.deposit(200) account2.deposit(100) account1.deactivate_account() account1.deposit(50) account1.activate_account() account1.deposit(50) ```class Person:聽 聽 def \_\_init\_\_(self,name,age):聽 聽 聽 聽 self.name = name聽 聽 聽 聽 self.age = age 聽 聽 def greet(self):聽 聽 聽 聽 print(f"Hola,mi nombre es {self.name} y tengo {self.age}") person1 = Person("Ana",33)person2 = Person("Luis",25) person1.greet()person2.greet() class BankAccount:聽 聽 def \_\_init\_\_(self,account\_holder, balance):聽 聽 聽 聽 self.account\_holder = account\_holder聽 聽 聽 聽 self.balance = balance聽 聽 聽 聽 self.is\_active = True 聽 聽 def deposit(self,amount):聽 聽 聽 聽 if self.is\_active:聽 聽 聽 聽 聽 聽 self.balance += amount聽 聽 聽 聽 聽 聽 print(f"Se ha depositado {amount}. Saldo actual: {self.balance}")聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 print("No se puede depositar, Cuenta inactiva") 聽 聽 def withdraw(self,amount):聽 聽 聽 聽 聽 聽 if self.is\_active:聽 聽 聽 聽 聽 聽 聽 聽 if amount <= self.balance:聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 self.balance -= amount聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 print(f"Se ha retirado {amount}. Saldo actual: {self.balance}")聽 聽 聽 聽 聽 聽 else:聽 聽 聽 聽 聽 聽 聽 聽 print("No se puede depositar, Cuenta inactiva") 聽 聽 def deactivate\_account(self):聽 聽 聽 聽 聽 聽 self.is\_active = False聽 聽 聽 聽 聽 聽 print(f"La cuenta ha sido desactivada.") 聽 聽 def activate\_account(self):聽 聽 聽 聽 聽 聽 self.is\_active = True聽 聽 聽 聽 聽 聽 print(f"La cuenta ha sido activada.") account1 = BankAccount("Ana",500)account2 = BankAccount("Luis",1000) \#Llamada a los m茅todos.account1.deposit(200)account2.deposit(100)account1.deactivate\_account()account1.deposit(50)account1.activate\_account()account1.deposit(50)
![](https://static.platzi.com/media/user_upload/image-d1a61bdf-db21-4da3-8195-db05cae9fe81.jpg)
```python class BankAccount: def __init__(self,acount_holder, balance): self.account_holder=acount_holder self.balance=balance self.is_active=True def activate_account(self): if self.is_active: print(f"la cuenta a nombre de {self.account_holder} ya se encuentra activa") else: self.is_active=True def deactivate_account(self): if self.is_active!=True: print(f"la cuenta a nombre de {self.account_holder} se encuentra actualemte inactiva") else: self.is_active=False print("Cuenta inactiva, no podras realizar retiros ni dep贸sitos") def deposit(self,amount): if self.is_active: self.balance+=amount print(f"Has agregado $ {amount} a tu cuenta, tu saldo actual es de $ {self.balance}") else: print("cuenta inactiva, no es posible depositar") def withdraw(self,amount): if amount>self.balance and self.is_active: print("La cantidad a retirar es mayor a tu saldo") if amount<self.balance and self.is_active: self.balance-=amount print(f"Retiraste $ {amount} de tu cuenta, tu saldo actual es de ${self.balance}") else: print("cuenta inactiva, no es posible depositar") def current_balance(self): if self.is_active: print(f"Hola {self.account_holder} tu saldo actual es de ${self.balance}") else: print("Lo sentimos, la cuenta est谩 inactiva") Account_a=BankAccount("Pedro",500) Account_a.activate_account() Account_a.deposit(200) Account_a.withdraw(300) Account_a.deposit(200) Account_a.current_balance() Account_a.deactivate_account() Account_a.withdraw(300) Account_a.deposit(200) Account_a.current_balance() la cuenta a nombre de Pedro ya se encuentra activa Has agregado $ 200 a tu cuenta, tu saldo actual es de $ 700 Retiraste $ 300 de tu cuenta, tu saldo actual es de $400 Has agregado $ 200 a tu cuenta, tu saldo actual es de $ 600 Hola Pedro tu saldo actual es de $600 Cuenta inactiva, no podras realizar retiros ni dep贸sitos cuenta inactiva, no es posible depositar cuenta inactiva, no es posible depositar Lo sentimos, la cuenta est谩 inactiva ```