Básicos del Lenguaje

1

Introducción a Python: Instalación y Conceptos Básicos

2

Desarrollo de CRUD con Python 3

3

Configuración de Ubuntu en Windows 10 para Ejecutar Comandos Linux

4

Curso Avanzado de Python: Actualización y Creación de Aplicaciones CLI

5

Programación gráfica básica con Python y Turtle

6

Operadores y Valores en Programación Python

7

Variables y Expresiones en Python: Tipos, Asignación y Reglas Básicas

8

Creación de Aplicación CLI para Gestión de Ventas y Clientes en Python

9

Funciones en Python: Declaración y Uso Básico

10

Funciones y Variables Globales en Python: Crear y Listar Clientes

11

Estructuras Condicionales y Booleanas en Programación

12

Personalización de Programas con Funciones y Condicionales en Python

Uso de strings y ciclos

13

Manipulación de Cadenas en Python: Índices y Memoria

14

Operaciones y métodos útiles para manipular strings en Python

15

Actualización de Clientes en Python: Implementación de Funciones

16

Implementación del Comando Delete en CRUD de Clientes

17

Manipulación de secuencias en Python con slices

18

Iteraciones en Python: Uso de For y While Loops

19

Bucles While en Python: Uso y Manejo de Errores Comunes

20

Iteradores y Generadores en Python: Creación y Uso Práctico

Estructuras de Datos

21

Uso de listas

22

Operadores y Métodos para Manipular Listas en Python

23

Manipulación de Listas en Programación Python

24

Diccionarios en Python: Uso y Métodos Básicos

25

Diccionarios en Python para Gestión de Clientes

26

Tuplas y Conjuntos en Python: Características y Usos Prácticos

27

Tuplas y Sets en Python: Conceptos y Usos Básicos

28

Colecciones Avanzadas en Python: UserDict, namedtuple y más

29

Comprehensions en Python: Listas, Diccionarios y Sets

30

Algoritmos de Búsqueda: BruteForce vs. Búsqueda Binaria en Python

31

Búsqueda Binaria en Python: Implementación Recursiva y Iterativa

32

Manipulación de archivos en Python 3

Uso de objetos y módulos

33

Introducción a Decoradores en Python: Modifica Funciones Eficazmente

34

Decoradores en Python: Creación y Uso Efectivo

35

Programación Orientada a Objetos: Principios y Aplicaciones

36

Conceptos Básicos de Programación Orientada a Objetos en Python

37

Names y Namespaces en Python: Conceptos Fundamentales

38

Uso de Click para Aplicaciones de Línea de Comandos en Python

39

Estructura y Comandos Básicos para Aplicaciones CLI en Python

40

Modelado de Clientes y Servicios en Python OOP

41

Recopilación de datos del usuario con CLI en Python

42

Implementación de List Clients en Client Services

43

Actualización de Clientes en Python: Implementación y Guardado en Disco

44

Actualización de Clientes en Interfaz de Comando

45

Manejo de Errores en Python: Try, Except, Else y Finally

46

Gestión de Contextos en Python: Clases y Generadores

Python en el mundo real

47

Aplicaciones de Python en Ciencias y Desarrollo Web

Conclusiones finales

48

Transición de Python 2 a Python 3 y PEPs esenciales

Clases bonus

49

Entorno Virtual en Python y su importancia: Python en el mundo real

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Conceptos Básicos de Programación Orientada a Objetos en Python

36/49
Recursos

Para declarar una clase en Python utilizamos la keyword class, después de eso le damos el nombre. Una convención en Python es que todas las clases empiecen con mayúscula y se continua con CamelCase.

Un método fundamental es dunder init(__init__). Lo único que hace es inicializar la clase basado en los parámetros que le damos al momento de construir la clase.

self es una referencia a la clase. Es una forma internamente para que podamos acceder a las propiedades y métodos.

Aportes 58

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

new() - es el responsable de** crear la instancia**, devuelve como objecto la instancia referencia. Cuando finaliza la ejecución del new, se procede a la llamada el method ini().

Cuando se construye un objeto, se inicializa invocando al método init.

Cuando leemos nuestro código decimos “dunder init” cada vez que nos encontramos con la cadena de caracteres init.

En inglés:

When a new object is made, it is initialized by calling the init method on the object. init is pronounced “dunder init”: dunder is short for “double-underscore”.

El self, para los que vengan de JS, funciona como el this keyword.

Me alegra haber aprendido POO en Java, sino estaría muy confundido en este momento, como lo estuve cuando lo vi por primera vez.

Encontré este ejemplo de decoradores en metodos, es pero que les sea de ayuda.

def p_decorate(func):
   def func_wrapper(*args, **kwargs):
       return "<p>{0}</p>".format(func(*args, **kwargs))
   return func_wrapper

class Person():
    def __init__(self):
        self.name = "John"
        self.family = "Doe"

    @p_decorate
    def get_fullname(self):
        return self.name+" "+self.family

my_person = Person()

print(my_person.get_fullname())

referencia:
thecodeship

utiliza new cuando quieras controlar la creación del objeto
utiliza init cuando quieras gestionar la inicialización del objeto

new es lo primero que se ejecuta cuando se instancia una clase y es el responsable de devolver una instancia de esa clase.
init no devuelve nada y solo se encarga de inicializar los valores iniciales del objeto

Upper Case: Todas las letras del identificador se encuentran en mayúsculas, por ejemplo: EJEMPLODENOMENCLATURA. Es usado, por ejemplo, para las constantes definidas en PHP.


Camel Case: El nombre viene porque se asemeja a las dos jorobas de un camello, y se puede dividir en dos tipos:
– Upper Camel Case, cuando la primera letra de cada una de las palabras es mayúscula. También denominado Pascal Case. Ejemplo: EjemploDeNomenclatura.
– Lower Camel Case, igual que la anterior con la excepción de que la primera letra es minúscula. Ejemplo: ejemploDeNomenclatura.
Es muy usada en los #hashTags de Twitter o en lenguajes como Java, PHP, C#…


Snake Case: Cuando cada una de las palabras, se separa por un guión bajo (_). Es común en los nombres de variables y funciones de lenguajes como C, aunque también Ruby y Python lo han adoptado. Como el Camel Case existen variedades, como todas las letras en mayúsuculas, denominado SCREAMING_SNAKE_CASE, que se utiliza para definir constantes. Ejemplo: ejemplo_de_nomenclatura


Kebab Case: Es igual que el Snake Case, esta vez, son guiones medios (-) los que separan las palabras. Su uso más común es de las urls. Ejemplo: ejemplo-de-nomenclatura

Este es el código que se vió en la clase con algunas modificaciones simples para hacer un poco más interactivo:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f'Hello, my name is {self.name} and I am {self.age} years old')


if __name__ == '__main__':
    name = input('What is your name? ')
    age = int(input('What is your age? '))

    person = Person(name, age)

    print(f'Age: {person.age}')
    person.say_hello()

Muy buen curso Platzi y David Aroesti


class Persona:
    def __init__(self, name,age):
        self.name=name
        self.age=age
        
    def say_hello(self):
        print('Hola , mi nombre es {} , y tengo {} años' .format(self.name,self.age))


if __name__ == "__main__":
    _nombre= input('porfavor digite su nombre')
    _edad= input('porfavor digite su edad')
    persona_= Persona(_nombre,_edad)
    persona_.say_hello()```

La realidad es que el método init crea el objeto y luego lo inicializa, no es el constructor como tal, en cambio el método new sólo construye el objeto.

Python, new se usa cuando necesita controlar la creación de una nueva instancia, mientras que init se usa cuando necesita controlar la inicialización de una nueva instancia.

new es el primer paso de la creación de la instancia. Se llama primero y es responsable de devolver una nueva instancia de su clase.

Por el contrario, init no devuelve nada; solo es responsable de inicializar la instancia después de que se haya creado.

https://seraph13.medium.com/volviendo-a-lo-básico-poo-en-python-diferencia-entre-init-y-new-parte-10-3ec7632388d1#:~:text=Muchos que han programado orientado,__ sólo construye el objeto.

https://dev.to/pila/constructors-in-python-init-vs-new-2f9j#:~:text=new%20is%20the,instance%20after%20it’s%20been%20created.

El método init crea el objeto y luego lo inicializa, no es el constructor como tal, en cambio el método new sólo construye el objeto.
Referencia:
https://medium.com/@_seraph1/volviendo-a-lo-básico-poo-en-python-diferencia-entre-init-y-new-parte-10-3ec7632388d1

El init, es un método muy esencial además también de que siempre tenemos que tener el kw self, para referirnos a la clase misma.

El metodo init es como el constructor que usamos en Java.

El new(dunder new). Se utiliza muy poco sin embargo tiene el proposito de usarse cuando se hacen subclases de de tipos inmutables como lo son las tuplas y los string.

Aqui les dejo una guia ligera!
https://rszalski.github.io/magicmethods/

el “self” funciona como el “this” de otros lenguajes como Java.

new(cls, args)
Método exclusivo de las clases de nuevo estilo que se ejecuta antes que init y que se encarga de construir y devolver el objeto en sí. Es equivalente a los constructores de C++ o Java. Se trata de un método estático, es decir, que existe con independencia de las instancias de la clase: es un método de clase, no de objeto, y por lo tanto el primer parámetro no es self, sino la propia clase: cls.

```js ``````python class car: def __init__(self, marca, modelo, año, color, velocidad): self.marca = marca self.modelo = modelo self.año = año self.color = color self.velocidad = velocidad def say__hello(self): print('Hola, mi marca es {} modelo {} año {} color {} y velocidad es {} km/h'.format(self.marca, self.modelo, self.año, self.color, self.velocidad)) if __name__ == "__main__": car = car('Toyota', 'Corolla', '2020', 'Rojo', '200') car.say__hello() ```class car: def \_\_init\_\_(self, marca, modelo, año, color, velocidad): self.marca = marca self.modelo = modelo self.año = año self.color = color self.velocidad = velocidad def say\_\_hello(self): print('Hola, mi marca es {} modelo {} año {} color {} y velocidad es {} km/h'.format(self.marca, self.modelo, self.año, self.color, self.velocidad)) if \_\_name\_\_ == "\_\_main\_\_": car = car('Toyota', 'Corolla', '2020', 'Rojo', '200') car.say\_\_hello() result: Hola, mi marca es Toyota modelo Corolla año 2020 color Rojo y velocidad es 200 km/h
new es usaso para crear una instancia de clase

4hrs de Anahi en Java en 15m con David en Python. Na mentiras gracias a todo lo que he cursado se me ha facilitado más con david.

class Persona:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print("Hello, my is {} and I am {} years old".format(self.name, self.age))

if __name__ == "__main__":
    person = Persona("David", 34)

    print("Age: {}".format(person.age))
    person.say_hello()

Útil: https://howto.lintel.in/python-new-magic-method-explained/
pare ser una opción de personalizar la creación del objeto, lo utilizas antes del init

Buenas tardes,

Existe sobrecarga de constructores?

Aprender Clases y Objetos con Java, facilita mucho la lógica. Con Python es mucho más sencillo declarar las clases y objetos y pasar las herencias y los métodos correspondientes. Python es un gran lenguaje, de verdad estoy muy feliz por este curso

Mi código, creando una clase Person, inicializando como un cliente y llamando una función que se encarga de devolver todos los datos para mostrarlos por pantalla.

El ejemplo estuvo muy básico pero creo que se entendio bien lo que David queria comunicar.

Camel Case para los que NO sepan consiste en poner la primera letra de cada palabra, del nombre de la clase en este caso, en MAYUSCULA

En python se utilizan los getters y setters?

Class Ejemplo:
def init():

init inicializa la clase de acuerdo a los parámetros iniciales

Genial!! Me encanta este lenguaje!

me hubiese gustado que explicaras mas detalles, porque cuando dices que es una propiedad en verdad es un campo o attribute, algo diferente a una property

init = constructor

El uso del init y el new mas explicado en el siguiente link https://www.code-learner.com/how-to-use-python-new-method-example/

Si no te quedo bien claro el concepto de las clases puedes ayudarte con este par de videos que me sirvieron de mucha ayuda, ya que estos conceptos son nuevos para mi.

https://www.youtube.com/watch?
v=vdz9HGfFguc&list=PLpOqH6AE0tNiK7QN6AJo_3nVGQPc8nLdM&index=31

Es una lista completamente desde 0, desde el mismo video pueden ir profundizando mas ustedes. Saludos!

class Persona:
    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad

    def say_hello(self):
        print(f'hola, mi nombre es: {self.nombre} y tengo { self. edad} años')

if __name__ == '__main__':

    name = input('¿Cuál es tu nombre?')
    age = input('¿Cuantos años tienes?')

    person = Persona(name,age)

    # print(f'hola {edad}')
    person.say_hello()

Cada vez que llamamos a una clase estamos generando una instancia

Java me resulta un lenguaje mas duro de aprender pero conocerlo me ha hecho super fácil pasar a POO con Python, es cuestión de conocer la sintaxis.

init crea el objeto y lo inicializa

No esta bien que se pueda acceder a los atributos de una clase de una forma directa, por esto se debe programar funciones que permitan obtener por este medio los atributos que se necesiten.

self: Es una referencia a la clase, es un forma para acceder a las propiedades y métodos de la clase.

investigando lo del método new, según la documentación de Python es “sí new es invocada en la construcción de un objeto y devuelve la instancia o subclase de cls, entonces el metodo de la nueva instancia init() será invocada como init(self[, …]), donde self es la nueva instancia y los demas argumentos son los mismos que fueron pasados al contructor de objetos” creo que lo explica muchísimo mejor el compañero Franck Sanchez.

Magic / dunder methods

Creo que es muy interesante estos métodos de doble guión bajo o dunder methods, tal como se dijo en el principio del curso, estos vienen con una función preestablecida, pero lo interesante esta, que si los colocas en el constructor de objetos y modificas como se comportarán estos harán lo que les pidas, un ejemplo que conseguí es que si usas el add(), cambias la forma en la que funcionará este método dentro de tu objeto, Ejemplo:

#Tenemos la clase persona
class Person:

    def __init__(self, name, age):  
        self.name = name
        self.age = age

    def say_hello(self):
        print(f'Hello my name is {self.name} and I am {self.age} years old')


if __name__ == '__main__':
    person = Person('David', 34)
    print(len(person.name)) #Imprime 5 que es la cantidad de caracteres de David

Ahora deseamos que el dunder method len haga que nos de la cantidad de caracteres que tiene el nombre completo de la persona (nombre + apellido) y no sólo el nombre, entonces


    def __init__(self, name, age):   #agregamos el apellido a la persona
        self.name = name
        self.age = age

    def full_name(self):
        return (f'')
    def say_hello(self):
        print(f'Hello my name is {self.name} and I am {self.age} years old')


if __name__ == '__main__':
    person = Person('David', 34)
    print(len(person.name))

Esto imprime en consola

David Aroesti
Hello my name is David and I am 34 years old
13 

13 es la suma de el len de David Aroesti y la obtenemos porque modificamos como funciona el dunder method len

para otros ejemplos y una explicación más detallada de los dunder methods está en inglés.

Hacemos la dot notation para acceder a las propiedades de una clase o algunos de sus valores. Los mismo que sus métodos, punto y luego nombre del método junto con los paréntesis.

Dentro de nuestras clases. el __init__ nos dice los parámetros para crear un objeto.

Para crear una instancia, lo único que tenemos que hacer es simplemente, inicializar la variable y llamar dentro de la variable nuestra clase con su nombre, si esta tiene parámetros de inicialización, entonces los declaramos también, y ya.

No accedas a las demás variables privadas.

Las variables privadas en Python, inician con una barra baja, igual que las funciones privadas.

Tenemos dentro del Dunder init, varias declaraciones de variables internas, algo como: self.golpear = golpear.

Luego de la definición de la clase, es el método __init__ o dunder init. los métodos se declaran cómo funciones. este método nos ayuda a inicializar la clase, basado en los parámetros que nos han dado cuándo la clase se construyó.

Para empezar nuestra clase, tenemos que usar el Keyword Class y luego el nombre del keyword de la clase, pero este a diferencia de la variable, sí tiene uppercase y su notación sería CamelCase. Empezamos con Mayúscula.

Python es un lenguajes de convenciones.

Por que es malo ingresar a esas variables o funciones que tienen _ _ , Realmente esto viene mas que todo de la etica del programador realmente dentro de python lo puedes hacer sin problema solamente que ese tipo de cosas se utiliza para convensiones de seguirdad a las cosas que veas de esta forma sabes que cosas puedes manejar y que otras cosas no, en otros lenguajes de programacion si estan un poco mas establecidas estas reglas con keywords predefinidas para las mismas, a la final sera lo mismo ya sea trabajar con una variable que sea protect o algo que tenga _

excelente clase

Muy buena clase explicando puntualmente como se genera una clase y una instancia.

class Person:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print('Hello, my name is {} and I am {} years old'.format(self.name, self.age))


if __name__ == '__main__':
    person = Person('Frank', '35')

    print('The user {} have {} years old'.format(person.name, person.age))
    person.say_hello()
  • Las clases se declaran con keyword class y por convención empiezan con la letra en Mayúscula.
  • El constructor de la clase, inicia los valores de la clase, se implementa con la fucción __init__(self, params).
  • self, hace referencia a la misma clase.