一、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)