Python — 面向对象进阶2

静态调用

"""
正方形的例子,如果类中需要非该类成员存在,则可以使用静态调用的方法@staticmethod

"""
class Joker(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_

#输出的方法一 joker
= Joker(2,2,2,2) res = joker.is_valid(2,2,2,2) if res == True: print(joker.area())

#输出的方法二
def amin():
    joker = Joker(2,2,2,2)
    res = joker.is_valid(2,2,2,2)
    if res == True:
        print(joker.area())
amin()

继承

"""
继承

"""
class A(object):
    def __init__(self):
        self.a = 100
        self.a1 = 200
    def sum_(self):
        SUM_ = self.a + self.a1
        return SUM_
    
class B(A):
    def __init__(self):
        #这个init是B自身的
        A.__init__(self)
    def print(self):
        res = self.sum_()
        print(res)

b = B()
b.print()
"""
带参数的继承

"""
class A(object):
    def __init__(self,a1):
        self.a = 100
        self.a1 = a1
    def sum_(self):
        SUM_ = self.a + self.a1
        return SUM_
    
class B(A):
    def __init__(self,a1,b1):
       #这个init是B自身的
        self.b1 = b1
        A.__init__(self,a1)
    def print(self):
        res = self.sum_()
        print(res)
        
b = B(1000,'1')
b.print()

装饰器

"""
装饰器的用法

"""
def number(func):
    def warp(a,b,c):
        num = a + b
        return func(a,num,c)
    return warp

@number
def sum(n1,n2,n3):
    #这里的sum就相当于上面的func
    #这里的n,n2,n3其实就相当于上面的a,b,c
    #其实最后运算的三个参数 是return func(a,num,c)中的a,num,c
    print (n1,n2,n3)
    print(n1 * n2)

sum(1,2,4)
# 装饰器

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)
"""
不定长参数,返回的是元组,**keargs返回的是字典

"""
#*args
def haha(*args):
    print(args)
         
haha(1,2,3,4,5,6,7,8,9)

"""
不定长参数,返回的是元组,**keargs返回的是字典

"""
#*args
def haha(*args):
    print(args)
         
haha(1,2,3,4,5,6,7,8,9)

# **keargs 相当于带参数名称的传参
def lala(**kwargs):
print(kwargs)

lala(a=1,b=2,c=3)
"""
完整版的装饰器,里面带了不定长参数*args和**kwargs

"""
def deco2(param):
    print(param)
    def deco(func):
        def warp(*args,**kwargs):
            print(args)
            print(kwargs)
            kwargs['name2'] = 10000
            return func(*args,**kwargs)
        return warp
    return deco

@deco2(1000)
def joker(name2):
    print(name2)

 

列表

列表生成式

优点: 计算速度快,因为一次性已经全部加载到内存中了,适合数据量不是太大的情况10000- 2000

缺点:占用内存

列表生成器

优点: 节约内存空间

缺点: 计算速度慢,因为要生成

# 列表生成式

a = (x for x in range(100000000000) if x % 2== 0)
for i in range(100):
    print(next(a))
    
"""
列表生成式

# 列表生成式

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

# 生成器

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

import os

path = '/Users/joker/jokers/DataSet/stanford-dogs-dataset/Annotation'
res = os.listdir(path)
print(res)
genter = (dir_ for dir_ in res)
print(next(genter))

 

posted on 2019-08-08 19:55  liyuan~  阅读(126)  评论(0编辑  收藏  举报

导航