zoukankan      html  css  js  c++  java
  • property特殊属性/类方法/静态方法

    property是将一个方法伪装成了一个属性,在代码层面看是没有本质提升的,

    但是在代码写出来之后,在类外面看来就由执行一个动作变成了查询一个属性,是面向对象的一种体现

    在对应的方法前加装饰器@property即可

    此时再调用相关内容的时候,不用再方法名加括号,直接以属性的形式,调用属性(实际是方法)名查询即可....

    以age为例

    class Person:
    
        def __init__(self,name,age):
            self.name = name
            self.__age = age
        @property
        def age(self):
            return (self.__age)
    p1 = Person('帅哥',20)
    print(p1.age)
    p1.age = 18

    这是满足了一个属性查的要求,伪装之后同样可删可改

    class Person:
    
        def __init__(self,name,age):
            self.name = name
            self.__age = age
        @property
        def age(self):
            return self.__age
        @age.setter               #修改
        def age(self,a1):
            if type(a1) is int:   #判断,修改的内容必须是数字
                self.__age = a1
            else:
                print('请输入数字')
            #三个age方法名必须一样,执行时,运行装饰器setter下面的代码,且把修改的值传给了self后面的参数a1
            #所以把a1给真正要被修改的内容
        @age.deleter              #删除
        def age(self):
            print(666)           #同样执行deleter也是触发下面的代码语句,具体实现其功能需要根据具体需求设定
    
    
    p1 = Person('帅哥',20)
    print(p1.age)
    p1.age = 18

    类方法

    在对应方法前加装饰器@classmethod,且括号内的默认self改为cls,python会自动将类名传到cls中,

    谁真正从源头上调用的cls,就是传谁的类名(类空间),不一定是定义这个方法的类.比如,子类没有而找到了父类中的类方法,那么就是

     #通过类名调用这个方法不需要传参,第一个参数约定俗成cls,python自动将类名(类空间)传给cls
    #通过对象调用这个方法cls,python还是自动将类名(类空间)传给cls
    #应用场景:
    # 1.类中的有些方法是不需要传入对象的,不需要对象的任何东西.比如这个方法的内容只操作类的属性
    # 2.对类中的静态变量进行改变
    # 3.在继承中,父类得到子类的类空间,可对子类为所欲为...

    静态方法

    在对应方法前加装饰器@staticmethod,且括号内无默认self参数

    看上去就是一个本就与类和对象都无关的函数

    #单独类外的函数就可以同样功能,为什么要写在里面?
    #因为:1 放在一个统一的代码块里,结构清晰
    # 2 提高复用性,继承有这个方法的类即可


  • 相关阅读:
    __init__ 构造行数的用法
    Android SDK下载安装及配置教程
    每条用例执行10次
    Python Json模块中dumps、loads、dump、load函数介绍
    Python接口测试实战2
    linux 下添加环境变量 和刷新
    mysql 练习题笔记
    http请求脚本排错指南
    docker命令及其常用事项
    anaconda 环境
  • 原文地址:https://www.cnblogs.com/shachengcc1/p/11144370.html
Copyright © 2011-2022 走看看