zoukankan      html  css  js  c++  java
  • 属性,类方法,静态方法

    1,特性propety,访问它时会执行一段功能,然后返回值

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.__age = age
    
        @property  # 查找(主要是用于私有属性)
        def func(self):
            return self.__age
    
        @func.setter  # 增加和删除 (对于私有属性)当私有属性中存在是就是更改,没有就是增加,
        def func(self):
            return self.__age
    
        @func.deleter  # 删除(对于私有属性)
        def func(self):
            del self.__age
    
    
    p1= Person("会员",29)  # 实例化对象p1
    p1.age = 26  # 增加属性self.age= 26
    p1.__age = 25  # 修改类中的静态属性self.__age = 25
    print(p1.func)  # 查找属性self.__age的值为29
    del p1.func  # 删除self.__age的属性
    print(Person.__dict__)
    print(p1.__dict__)

    对属性(私有属性)在对象空间的增,删,改,查的一系列的操作,对类的空间的内容没有任何影响,只是引用到对象空间进行一番操作.

    • 为什么要用property?

    将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉到自己的name实质性了一个函数然后计算出来,这种特性的使用方式统一访问的原则

    由于新式类具有三种访类问方式,我们可以根据他们几个属性的访问特点,分别将三个定义方法对同一个属性:获取,修改,删除

    2,类方法,静态方法

    • 2.1>类方法:
    class A:
        def func(self):  # 普通方法
            print(self)
    
        @classmethod  # 类方法
        def func1(cls):
            print(cls)
    a1= A()
    print(a1)
    a1.func()
    print(a1)
    a1.func1()
    print(a1)

    类方法:通过类名调用的方法,类方法中第一个参数约定俗称cls,python自动将类名(类空间)传给cls,对象调用类方法,cls的到是本身

    class A:
        name = "老郑"
        count = 1
    
        @classmethod
        def func(cls):
            return cls.name + str(cls.count + 1)
    print(A.func())
    a1 = A()
    print(a1.func())

    • 2.2>静态方法:对静态变量进行改变,要用类方法,在继承中,父类得到子类的空间.
    class A:
        age = 12
    
        @classmethod  # 这个方法不用对象参与
        def func(cls):
            cls.age = 30  #对B类的静态字段可以修改
            return cls.age
    class B(A):
        @staticmethod
        def login(username, password):
            if username == "alex" and password == 123:
                print("登陆成功")
            else:
                print("登陆失败")
    A.login("alex",1234)
    def login(username,password):
        if username == "alex" and password == 123:
            print("登陆成功")
        else:
            print("登陆失败")

    把相似的功能的函数封装在类中,1>提高了代码的逻辑性,条理性,2>调高了代码的复用性和维护性,3>增强了代码之间的联系

     
  • 相关阅读:
    QT QQuickView嵌入到QT MDI中
    地理入门-经纬度时区速成总结篇(转)
    Linux下系统时间函数、DST等相关问题总结(转)
    camera接口---MIPI CSI-2接口、DVP接口和FPD-Link III LVDS、GMSL等接口对比(转)
    基于spi FLASH的嵌入式文件系统 littlefs(转)
    PID 温控系统 解决方法(转)
    单相计量芯片RN8209D使用经验分享(转)
    【开源】EasyFlash 新年发布 V4.0 beta 版,完全重写(转)
    在uboot中加入cmd_run命令,运行环境变量(转)
    MPU6050开发 -- 数据分析(转)
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/9380783.html
Copyright © 2011-2022 走看看