菜鸟"Python"之————题海战术(10)

面像对象的封装性

class Student():
    count=0           #累属性
    def __init__(self,name,age,sex):   #初始化方法,负责把所有现有数据开辟一个对象属性给新的对象
        self.name=name
        self.age=age
        self.sex=sex
    def showSelf(self):      #成员方法 ————函数
        print(self.name,self.age,self.sex)
xm=Student('小明',20,'男')
xm.showSelf()
xm.score=90
print(xm.score)


class Student():
    count=0           #累属性
    def __init__(self,name,age,sex):   #初始化方法,负责把所有现有数据开辟一个对象属性给新的对象
        self.name=name
        self.__age=age
        self.sex=sex
    def showSelf(self):      #成员方法 ————函数
        print(self.name,self.__age,self.sex)
    def getAge(self):
        return self.__age
xm=Student('小明',20,'男')
xm.showSelf()
print(xm.getAge())


class People():
    __slots__ = ('x','y','z','o') #限定对象属性个数,必须在此范围内
    def __init__(self,x,y,z):
        self.x=x
        self.y=y
        self.z=z
    def show(self):
        print(self.x,self.y,self.z)
zs=People(1,2,3)
zs.show()
zs.o=100
print(zs.o)

面像对象的多态性

class Weixin():
    def pay(self):      #微信类的支付方法
        print('我现在走的是微信支付!')
class Alibaba():
    def pay(self):      #支付宝类的支付方法
        print("我现在走的是支付宝!")
class Bank():
    def pay(self):      #银联类的支付方法
        print('我现在走的是银联支付!')
def pay(x):             #支付函数
    x.pay()             #调用 x 的支付方法
w=Weixin()
a=Alibaba()
b=Bank()
pay(w)
pay(a)
pay(b)

###############################
面像对象的继承性

class A():
    def __init__(self,x):   #父类的初始化方法
        self.x=x
class B(A):
    def __init__(self,x,y):   #子类的初始化方法。如果没有初始化方法就调用父类的,如果有就调用自己的
        super().__init__(x)
        self.y=y
    def show(self):
        print(super.x)
b=B(1,2)
print(b.x,b.y)

#####对比出继承

class A():
    def __init__(self,x):
        self.x=x
class B(A):
    def show(self):
        print(self.x)
b=B(1)
print(b.x)

#################################

闭包
def waibu(x):   # 闭包 1.包含内部函数 2.外部函数返回的是内部函数的名字(不调用) 3.内部函数使用了外部函数的变量
    y=10
    def neibu(z):
        return x+y+z
    return neibu
a=waibu(20)     # a 相当于内部
print(a(1))
print(a(2))
print(a(3))

引入装饰器

import time    #导入的时间包
def qiuhe():
    i=0
    he=0
    while i<10000000:
        he+=i
        i+=1
    print(he)
start=time.time()    #求当前时间 a
qiuhe()
end=time.time()      #求当前时间  b
print(end-start)     当前时间 b-当前时间 a 得到函数的运行时间

装饰器

import time
def zsq(func):
    print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
    print('正式开始!')
    print('        *****************欢迎*******************')
    def neibu():
        print('11111111111111111')
        start=time.time()
        func()
        end=time.time()
        print("111111111111111111----->>>",end-start)
        print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
    return neibu
@zsq
def qiuhe():
    print('开始!')
    i=0
    he=0
    while i<100000:
        he+=i
        i+=1
    print(he)
    print('结束!')
qiuhe()

def decor(f):        #装饰器
    def hs(name):
        print('**************************')
        f(name)
        print("**************************")
    return hs       #返回内部函数
@decor
def hanshu(name):
    print('热烈欢迎',name,'前来访问')
hanshu('呵呵呵')

def dec(f):
    def hs(name):
        print('##########################')
        f(name)
        print('##########################')
    return hs
def decor(f):        #装饰器
    def hs(name):
        print('**************************')
        f(name)
        print("**************************")
    return hs       #返回内部函数
@dec
@decor
def hanshu(name):
    print('热烈欢迎',name,'前来访问')
hanshu('呵呵呵')

生成器

def xyz():
    i=0
    while i<5:
        yield i      #yield 生成器的关键字
        i+=1
a=xyz()
print(next(a))       #一次一次的调用生成器 a 产生的数据
print(next(a))
print(next(a))
print(next(a))

斐波那契 生成器实例

def fbnq(x):
    a,b=0,1
    i=0
    while i<x:
        a,b=b,a+b #a=1,b=1    a=1,b=2   a=2,b=3  a=3,b=5
        yield a   #   1          1        2         3
        i+=1
b=fbnq(5)
print(next(b))
print(next(b))
print(next(b))
print(next(b))
print(next(b))

迭代器

a=[1,2,3,4,5,6]
b=iter(a)
print(next(b))
print(next(b))
print(next(b))
print(next(b))

for 内部也含有迭代器  for x in ...

========================================
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值