面向对象-clssmethod staticmethod @property

Posted fan-1994716

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象-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)

 

    

以上是关于面向对象-clssmethod staticmethod @property的主要内容,如果未能解决你的问题,请参考以下文章

通过类模拟一个classmthod

python 之单例模式

面向对象编程——面向对象和面向过程

三. python面向对象

224 面向对象编程介绍,面向过程与面向对象

面向对象-面向对象和面向过程的区别