Escenarios de aplicación de setattr\getattr\delattr\hasattr

1. descripción setattr

La función setattr() corresponde a la función getattr(), que se utiliza para establecer el valor del atributo, y el atributo no necesariamente existe.

Sintaxis: setattr(objeto, nombre, valor)
objeto – objeto.
nombre: cadena, propiedad del objeto.
valor: el valor del atributo.

2. descripción getattr

La función getattr() se utiliza para devolver un valor de atributo de objeto.

getattr Sintaxis: getattr(objeto, nombre[, predeterminado])
objeto – objeto.
nombre: cadena, propiedad del objeto.
predeterminado: el valor de retorno predeterminado.Si no se proporciona este parámetro, se activará AttributeError si no hay un atributo correspondiente.

3. descripción delattr

La función delattr se utiliza para eliminar atributos. delattr(x, 'foobar') es equivalente a del x.foobar.

delattr Sintaxis: delattr(objeto, nombre)
objeto – objeto.
nombre: debe ser una propiedad del objeto.

4. descripción hasattr

La función hasattr() se utiliza para determinar si el objeto contiene el atributo correspondiente.

hasattr Sintaxis: hasattr(objeto, nombre)
objeto – objeto.
nombre – cadena, nombre de la propiedad.

5. Escenarios de aplicación (principalmente setattr)

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time

'''setattr含义:为一个类设置属性或值-setattr(class, attribute, value),即使这个属性不存在
应用场景:
场景1、初始化未必全需要写在def __init__(self)函数里面。如果有很多的话写起来会比较长。可以通过下面代码init_fun拆分。
场景2、可以动态添加属性,增加类或实例的添加属性的灵活性。
场景3、当批量初始化同样的属性时,可以减少代码量。
场景4、可以当作错误码使用。
上述场景在下面代码里面也会涉及到。
'''


class A(object):
    def __init__(self):
        # 场景1
        self.init_fun()

    # 场景3
    def add_attribute(self, attribute, room_size, des, price):
        value = {
    
    "room_size": room_size,
                 "description": des,
                 "price": price}
        setattr(self, attribute, value)

    # 场景3(将add_attribute里面的数据改成web的错误码集合,就能应用到场景4)
    def init_fun(self):
        self.add_attribute("roomA", "100", "high", "10w")
        self.add_attribute("roomB", "130", "low", "15w")
        self.add_attribute("roomC", "140", "low", "100w")
        self.add_attribute("roomD", "150", "low", "10w")


test = A()
print(test.roomA)
# 场景2
setattr(test, "roomE", {
    
    "room_size": "100",
                        "description": "middle",
                        "price": "90W"})
print(test.roomE)
# getattr的用法
print(getattr(test, "roomB"))
# delattr的用法
print(delattr(test, "roomB"))
# hasattr的用法
print(hasattr(test, "roomB"))
print(hasattr(test, "roomA"))

La salida es la siguiente:

E:\pythonPrj\common\venv\Scripts\python.exe E:/pythonPrj/common/setattr_getattr.py
{
    
    'room_size': '100', 'description': 'high', 'price': '10w'}
{
    
    'room_size': '100', 'description': 'middle', 'price': '90W'}
{
    
    'room_size': '130', 'description': 'low', 'price': '15w'}
None
False
True

Process finished with exit code 0

Supongo que te gusta

Origin blog.csdn.net/eettttttt/article/details/131447697
Recomendado
Clasificación