• 面向对象-clssmethod staticmethod @property


    一、classmethod介绍

    介绍:@classmethod修饰符我们从名称就可以知道,这是一个类方法,那么和普通的类中的方法有什么不同的

    a、类方法,是由类本身调用的,无需实例化类,直接用类本身调用即可,但是要注意实例对象也可以调用类方法

    b、类方法,无需要要一个self参数,这个self参数表示类的实例对象,但是他需要一个cls参数,这个参数表示类本身

    c、类方法,可以调用类的属性,类的方法,类的实例对象

    下面我们正常进入介绍classmethod这个修饰符

    1、类方法可以由类调用,也可以由实例对象调用

    class Test:
    # n=1
    # def func1(self):
    # print('你好')
    # @classmethod
    # def func2(cls):
    # cls.func1(object)
    # cls.func3()
    # return cls.n
    # @classmethod
    # def func3(cls):
    # print('大帅哥')
    # a=Test.func2()
    # b=Test()
    # # b.func2()
    # # print(b.func2())
    # print(a)

    运行结果:
    你好
    大帅哥
    1

    python staticmethod 返回函数的静态方法。

    该方法不强制要求传递参数,如下声明一个静态方法:

    class C(object):
        @staticmethod
        def f(arg1, arg2, ...):
            ...

    以上实例声明了静态方法 f,从而可以实现实例化使用 C().f(),当然也可以不实例化调用该方法 C.f()。

    函数语法

    staticmethod(function)

    一.定义

    装饰器@property
    可以把方法变成属性使用
    作用: 控制类内成员的获取 设置 删除
    获取 @property
    设置 @自定义名.setter
    删除 @自定义名.deleter

    二.具体实现

    1.方法一

    class MyClass():
        def __init__(self,name):
            self.name = name

        #获取
        @property
        def username(self):
            return self.name

        #设置
        @username.setter
        def username(self,val):
            self.name = val
    #删除
        @username.deleter
        def username(self):
            del self.name
    obj = MyClass("ONE")
    # 获取
    print(obj.username)

    # 设置
    obj.username = "two"
    print(obj.username)

    # 删除 del 调用删除相关的方法
    del obj.username
    # print(obj.username)

     

        

  • 相关阅读:
    Hashtable源码分析
    ConcurrentHashMap1.7源码分析
    JDK1.8新特性
    回炉Spring--Bean生命周期及AOP
    @DateTimeFormat 和 @JsonFormat 注解
    面向切面编程-日志切面应用及MDC使用
    maven 多模块开发
    maven 安装
    ztree树节点重叠问题
    Java问题解读系列之IO相关---Java深拷贝和浅拷贝
  • 原文地址:https://www.cnblogs.com/fan-1994716/p/11634548.html
Copyright © 2020-2023  润新知