一、静态方法和类方法
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.装饰器示例:创建三个函数,两个参数,装饰器处理这两个参数的和,每一个函数打印这两个参数
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)
原文:https://www.cnblogs.com/baoleiiwa/p/11322718.html