python静态方法和类方法、装饰器

一、静态方法和类方法

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)

  

猜你喜欢

转载自www.cnblogs.com/baoleiiwa/p/11322718.html
今日推荐