Diez minutos de herencia de clases/objetos introductorios de Python

Clases/objetos de Python

Casi todo en Python es un objeto, con propiedades y métodos.

Una clase es como un constructor de objetos o un "modelo" para crear objetos.

crear clase

Para crear una clase, use  class la palabra clave:

#如需创建类,请使用 class 关键字:
class MyClass:
  name = '小明'
  age = 11
Crear objeto

Ahora podemos crear objetos usando la clase llamada myClass:

#现在我们可以使用名为 myClass 的类来创建对象:
p1 = MyClass()
print(p1.name)
#输出:小明
Función __init__()

Los ejemplos anteriores son clases y objetos en su forma más simple y no son realmente útiles en aplicaciones reales.

Para comprender el significado de las clases, primero debemos comprender las funciones integradas  __init__() .

Todas las clases tienen una función llamada __init__() que siempre se ejecuta al iniciar la clase.

Utilice la función __init__() para asignar valores a las propiedades del objeto u otras operaciones que necesite realizar al crear un objeto:

#__init__() 函数
#创建名为 Person 的类,使用 __init__() 函数为 name 和 age 赋值:
class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("小明", 11)

print(p1.name, p1.age)
#输出:小明 11
Métodos de objetos

Los objetos también pueden contener métodos. Los métodos de un objeto son funciones que pertenecen a ese objeto.

#对象也可以包含方法。对象中的方法是属于该对象的函数。
class Person1:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  #self 参数是对类的当前实例的引用,用于访问属于该类的变量
  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person1("小明", 11)
p1.myfunc()
#输出:Hello my name is 小明
parámetro propio

self El parámetro es una referencia a la instancia actual de la clase y se utiliza para acceder a variables que pertenecen a esa clase.

No es necesario que tenga nombre  self, puedes llamarlo como quieras, pero debe ser el primer parámetro de cualquier función de la clase :

#self 参数是对类的当前实例的引用,用于访问属于该类的变量
#它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数:
class Person3:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person3("小明", 12)
p1.myfunc()
#输出:Hello my name is 小明
Propiedades del objeto
#修改对象属性
p1.name = '小红'
p1.myfunc()
#输出:Hello my name is 小红

#del 关键字删除对象的属性
del p1.age
print(p1.age)

#删除对象
del p1
 Métodos __enter__ y __exit__

Para los recursos del sistema, como archivos, conexiones de bases de datos y sockets, después de que la aplicación abre estos recursos y ejecuta la lógica empresarial, una cosa que debe hacer es cerrar (liberar) el recurso.

#当离开 with 代码块的时候,系统会自动调用 __exit__() 方法, with 的作用和使用 try/finally 语句是一样的
class Testwith(object):
  '''
  with 包含了 __enter__ 和 __exit__ 方法
  '''

  def __enter__(self):
    print('run now ')

  def __exit__(self, exc_type, exc_val, exc_tb):
    if exc_tb is None:
      print('exit normal ')
    else:
      print('exit with exception')

#首先执行expression里面的__enter__函数,它的返回值会赋给as后面的variable。
#–>然后,开始执行with-block中的语句,不论成功失败(比如发生异常、错误,设置sys.exit()),在with-block执行完成后,会执行expression中的__exit__函数。
with Testwith():
  print('test')
  #抛出异常
  raise NameError('Exception')

 Herencia de Python

La herencia nos permite definir una clase que hereda todos los métodos y propiedades de otra clase.

La clase padre es la clase heredada, también conocida como clase base.

Una subclase es una clase que hereda de otra clase, también conocida como clase derivada.

Crear clase padre
#创建父类
class Person:
  def __init__(self, fname, age):
    self.firstname = fname
    self.age = age

  def printname(self):
    print(self.firstname, self.age)

# 使用 Person 来创建对象,然后执行 printname 方法:
x = Person("小明", "12")
x.printname()
#输出:小明 12
Crear subclase
#创建子类
class Student(Person):
  pass

a = Student('小红', '12')
a.printname()
#输出:小红 12
Agregar la función __init__()

Hasta ahora, hemos creado una subclase que hereda las propiedades y métodos de la clase principal.

#当您添加 __init__() 函数时,子类将不再继承父的 __init__() 函数。
#如需保持父的 __init__() 函数的继承,请添加对父的 __init__() 函数的调用:
class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

a = Student('小红', '12')
a.printname()
#输出:小红 12
Utilice la función super()

Python también tiene una  super() función que hace que una clase hija herede todos los métodos y propiedades de su clase padre:

#super() 函数,它会使子类从其父继承所有方法和属性:
class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
Agregar método de atributo
#添加属性方法
class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
      print("Welcome", self.firstname, self.age, "to the class of", self.graduationyear)

x = Student("小明", "12", 2019)
print(x.graduationyear)
#输出:2019
x.welcome()
#输出:Welcome 小明 12 to the class of 2019

 Descarga del código fuente

 Si este documento no es lo suficientemente detallado, puede consultar aprender Python en diez minutos_bilibili_bilibili​

Supongo que te gusta

Origin blog.csdn.net/kan_Feng/article/details/131921413
Recomendado
Clasificación