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 提高复用性,继承有这个方法的类即可


  • 相关阅读:
    ASP.NET前台代码绑定后台变量方法总结
    <%# Eval("name")%>与<%# Bind("name")%>
    验证数字的正则表达式集
    品高:C#与JAVASCRIPT函数的相互调用:1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4.如何在C#中访问JavaScript函数?
    Visual Web Developer 的自定义WebForm模板
    关键字加亮JS方法
    vss安装,设置以及与vs2005联合项目操作(转)
    删除SQL中重复行
    完全兼容的 鼠标滚轴缩放图片
    为循环的repeater的第一行加个样式
  • 原文地址:https://www.cnblogs.com/shachengcc1/p/11144370.html
Copyright © 2011-2022 走看看