Python Capítulo 17: Conceptos básicos orientados a objetos

Fundación orientada a objetos

Clase: una clase es una colección de objetos con las mismas funciones y propiedades. (La clase es abstracta)

Objeto: una instancia de una clase es un objeto (el objeto es concreto)

Defina el código de clase directa para describir claramente qué objetos tiene las mismas propiedades y qué funciones

Sintaxis:
clase nombre de clase:
descripción de
clase documento contenido de clase (atributos de clase y métodos de clase)

Crear objeto

Sintaxis:
nombre de clase ()

class Circle:
    pi = 4.1315926

    def __init__(self):
        self.r = 0

    def area(self):
        print(Circle.pi*self.r**2)

    def perimeter(self):
        print(2*Circle.pi*self.r)

# 创建两个Student类的对象
s1 = Student()
s2 = Student()
print(s1 is s2)    # False
print(id(s1), id(s2))
print(s1)
print(s2)

=============== Método de construcción e inicialización

Que es un constructor (función)

El nombre es el mismo que el de la clase y la función es una función para crear un objeto de la clase correspondiente.

Cuando python define un tipo, el sistema creará automáticamente un método de construcción correspondiente para esta clase

Método mágico: las funciones que comienzan con __ y terminan con __ en una clase se denominan colectivamente métodos mágicos. Este tipo de método no requiere que el programador lo llame, el sistema lo llamará automáticamente cuando sea apropiado

Método de inicialización: _ init _

Al crear un objeto a través de una clase, el sistema llamará automáticamente al método __init__ en esta clase

Al agregar el método __init__ a la clase, siempre que el nombre del método y el parámetro predeterminado self no se modifiquen, el programador puede agregar parámetros y cuerpos de función a voluntad

Al llamar al constructor para crear un objeto, no se necesitan parámetros. Se necesitan varios parámetros. Vea si el método __init__ en la clase correspondiente tiene parámetros formales adicionales además de self. Hay varios

========== Atributos de clase

Los atributos de la clase se dividen en: atributos de clase (campos de la clase) y atributos de objeto

Atributo de clase

Definición: define directamente las variables fuera de la función en la clase.
Características: no es diferente debido a los diferentes objetos.
Cómo usar: nombre de clase. Atributo de clase

Atributos de objeto

Definición: En la función __init__, se define en la forma de 'self.attribute name = value'.
Características: será diferente debido a los diferentes
objetos. Cómo usar: object.object atributo

class Person:
    a = 10

    def __init__(self):
        self.name = '张三'
        self.age = 18
        self.gender = '男'
class Dog:
    def __init__(self, name, color, gender='母狗', breed='土狗'):
        self.name = name   # 每次创建狗的对象的时候必须给name属性传参
        self.gender = gender  # 每次创建狗的对象的时候可以不给gender赋值,也可以给gender赋值。如果不赋值默认值是'母狗'
        self.age = 1      # 每次创建狗的对象的时候age的值只能是1
        self.color = color
        self.breed = breed

    # __repr__魔法方法:打印当前类的对象的时候,系统会自动调用这个方法,并且把这个方法的返回值作为打印结果(返回值必须是字符串)
    def __repr__(self):
        # self: 打印谁self就指向谁
        # return str(self.__dict__)
        return f'<{str(self.__dict__)[1:-1]}>'

d1 = Dog('大黄', '黄色')
print(d1.name, d1.color, d1.gender, d1.age, d1.breed)

d2 = Dog('小白', '白色', breed='哈士奇')
print(d2)

====================== Método de clase

Las funciones definidas en la clase son métodos. Los métodos de la clase se dividen en: métodos de objeto, métodos de clase, métodos estáticos

Método de objeto

Cómo definir: La función definida directamente en la clase es el método del objeto (no se agrega ningún decorador antes de que se defina la función)
Características: self-parameter self; el parámetro self no necesita pasarse al llamar, el sistema pasará automáticamente el objeto actual a self (who Quien se llame a sí mismo)

list
list1 = [100,20]
list1.append(42)
print(list1)    [100,20,40]
此处append后有两个参数,其中一个就是self,不给值,list1.了这个对象,self就指向list1

Cómo llamar: llamar a través de la forma de objeto. Nombre del método ()
Cuándo usar: si las propiedades del objeto son necesarias para implementar la función de la función

练习:定义一个点类(二维),有属性: x坐标、y坐标  方法:计算当前点到指定点的距离
class Point:
    def __init__(self,x,y):
        self.x = x
        self.y = y

    def distance(self,self2):
        return ((self.x-self2.x)**2+(self.y-self2.y)**2)**0.5


p1 = Point(10,20)
p2 = Point(20,30)
result = p1.distance(p2)
print(result)

Supongo que te gusta

Origin blog.csdn.net/SaharaLater/article/details/111935437
Recomendado
Clasificación