一、静态方法和类方法
1.静态调用:@staticmethod
class A(object):
@staticmethod
def a():
print('a')
A.a()
如果类中需要非该类成员存在,则可以使用静态调用的方法
2.示例
输入四条边判断是否它是正方形,如果是:计算面积,用@staticmethod
class zfx(object):
def __init__(self,a,b,c,d):
self.a=a
self.b=b
self.c=c
self.d=d
@staticmethod
def is_valid(a,b,c,d):
for i in [b,c,d]:
if i !=a:
return False
else:
return True
def area(self):
if res == True:
area_ = self.a *self.b
return area_
fx = zfx(5,5,5,5)
res = fx.is_valid(5,5,5,5)
fx.area()
if res == True:
print(fx.area())
3.类方法
(1)默认值:
def A(bl = 'hello'):
print(bl)
A()
输出结果为:hello
(2)cocaltime
#调用localtime这个库:
from time import time,localtime,sleep
print(time())
时间戳,从1970年1月1日00.00.00开始到现在经历过的秒数
(3)@classmethod
@classmethod:获取自身类(cls)中的属性,并且可以更改.
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等
4.类与类之间的关系(继承)
(1)第一步要类名中写上继承的类
(2)建议用类名(classname)__init__(self):a.__init__(self)
(3)示例:创建一个父类创建一个子类,父类计算两个数字的和计算SUM_,子类打印这个SUM_
class fu(object):
def __init__(self):
self.a = 10
self.b = 20
def sum_(self):
sum=self.a + self.b
return sum
class zi(fu):
def __init__(self):
fu.__init__(self)
def PRINT(self):
res = self.sum_()
print(res)
b= zi()
b.PRINT()
输出:30
5.列表生成式和列表生产器
#列表生成式
a = [x for x in range(100)]
print(a)
#列表生成器
a = (x for x in range(100))
print(a)
列表生成式与列表生成器的优缺点:
(1)生成式:
优点: 计算速度快,因为一次性已经全部加载到内存中了,适合数据量不是太大的情况10000- 2000-
缺点: 占用内存
(2)生成器:
优点: 节约内存空间
缺点: 计算速度慢,因为要生成
二、装饰器
1.函数的闭包:函数包函数
2.装饰器的用法:先走装饰器再走函数
3.装饰器示例:创建三个函数,两个参数,装饰器处理这两个参数的和,每一个函数打印这两个参数
def Joker(func):
def warp(n1,n2,n3):
num = n1 + n2
return func(0,num,n3)
return warp
*装饰器将前两个数字求和,函数本身第三个参数乘上这个和*
@Joker
def SUM(num1,num2,num3):
print(num1,num2,num3)
print(num2 * num3)
SUM(10,2,3)