类与类方法

静态方法和类方法

@staticmethod   静态方法

  如果类中需要非该成员存在,则可以使用静态调用的方法

例:输入四条边,判断它是否是一个正方形,如果是:计算面积

class zhengfangxing(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):
    #def is_valid(self):
        #for i in [self._b,self._c,self._d]:
        for i in [b,c,d]:
            #if i !=self._a:
            if i !=a:
                return False
        else:
            return True
    def area(self):
        #res = self.is_valid()
        if res == True:
            area_ =self._a * self._b
            #print(area_)
            return area_
zfx = zhengfangxing(2,2,2,2)
#zfx.is_valid()
res=zfx.is_valid(2,2,2,2)
if res == True:
     print(zfx.area())
#zfx.area()

时间

from time import time,localtime,sleep

  print(time())  #时间戳,从1970年1月1号00.00.00秒开始到现在经历过的秒数

  pritn(localtime()) #经历的天数

@classmethod   获取自身类(cls)中的属性,并且可以更改

例:

class A(object):
    def __init__(self):
        self.joker=100
        
    @classmethod
    def a(cls):
        return cls()
    
#不需要创建A的实例,可直接用A调用a
joker=A.a()
print(joker)
joker2=A()
print(joker2)

 

类与类之间的关系

继承

例:创建两个类,父类计算两个数的和,子类继承

class F(object):
    def __init__(self):
        self.a = 100
        self.b = 20
        
    def sum(self):
        SUM_ = self.a + self.b
        return SUM_
        
class Z(F):
    def __init__(self):
        F.__init__(self)
        
    def p(self):
        res = self.sum()
        print(res)
        
z = Z()
z.p()

创建虚拟环境

  • conda create --name env_name python3.7     创建虚拟环境
  • conda activate env_name  进入虚拟环境
  • conda env list  查看虚拟环境
  • pip freeze  查看当前环境自己安装的包
  • conda deactivate  退出虚拟环境
  • conda env remove --name env_name   删除虚拟环境

列表生成式

  • 列表生成式

  a = [x for x in range(100000000000) if x % 2== 0]
  优点: 计算速度快,因为一次性已经全部加载到内存中了,适合数据量不是太大的情况10000- 2000-
  缺点: 占用内存

  •  生成器

  a = (x for x in range(100000000000) if x % 2== 0)
  优点: 节约内存空间
  缺点: 计算速度慢,因为要生成.

 例:

a = (x for x in range(100000000000) if x % 2== 0)
for i in range(100):
    print(next(a))
path = '/Users/joker/jokers/DataSet/stanford-dogs-dataset/Annotation'
res = os.listdir(path)
print(res)
genter = (dir_ for dir_ in res)
print(next(genter))

闭包函数

def foo():
    def bar():
        return "hello"
    return bar
f1 = foo()
print(f1())
def foo():
    def bar():
        def bar2():
            return "Hello"
        return bar2
    return bar
f1 = foo()
print(f1())
f2 = f1()
print(f2())

装饰器

例: 1.创建一个装饰器,三个函数,装饰器处理这两个从参数的和并打印,每一个函数打印这两个参数

def deco(func):
    def warp(d,g):
        print("两个数的和:",d+g)
        return func(d,g)
    return warp
        
        
@deco
def yi(a1,a2):
    print(a1,a2)
@deco
def er(b1,b2):
    print(b1,b2)
@deco
def san(c1,c2):
    print(c1,c2)

yi(3,4)
er(5,6)
san(7,8)

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)

 

posted @ 2019-08-08 17:12  曹阳123  阅读(181)  评论(0编辑  收藏  举报