python day3

面向对象的进阶2
一、静态调用和类的调用

1、如果类中需要非该类成员存在,则可以使用静态调用的方法@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_
zfx=Zfx(8,8,8,8)
res = zfx.is_valid(8,8,8,8)
if res==True:
print(zfx.area())

输出:64
复制代码
2、@classmethod:获取自身类(cls)中的属性,并且可以更改.
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等

例题:

复制代码
class A(object):
def init(self):
self.jxh = 100
@classmethod
def a(cls):
return cls()
c = A.a()
print (c.jxh)

输出:100
复制代码
3、

from time import time,localtime,sleep
print(time())

输出:1565255554.80476
输出的是时间戳,是从1970年1月1号00.00.00秒到现在2019/8/817:18:25秒整理过的秒速

二、继承

复制代码
class A(object):
def init(self):
self.a=111
def A1(self):
print(‘A1’)
#在类名中写上继承的类
class B(A):
def init(self):
A. init(self)
self.a=200
def B1(self):
print(‘B1’)
c=B()
print(c.a)
c.A1()

输出:100
A1
复制代码
例题1:创建一个父类和一个子类

         父类计算两个数字的和为SUM_

          子类打印这个SUM_

复制代码
class A(object): #A父类
def init(self):
self.a=10
self.a1=20
def sum_(self):
SUM_=self.a+self.a1
return SUM_
class B(A): #B继承A
def init(self):
A. init(self) #继承A中所有
def B1(self):
res = self.sum_()
print(res)
b=B()
b.B1()

输出:30
复制代码
三、

1、列表生成式----[ ]

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-
缺点: 占用内存

2、列表生成器----( )

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

四、函数闭包

所谓的函数闭包本质是函数的嵌套和高阶函数。我们来看看要实现函数闭包要满足什么条件(缺一不可):

1)必须嵌套函数
2)内嵌函数必须引用一个定义在闭合范围内(外部函数里)的变量——内部函数引用外部变量
3)外部函数必须返回内嵌函数——必须返回那个内部函数
闭包的作用:可以保持程序上一次运行后的状态然后继续执行。
实例如下:

按 Ctrl+C 复制代码

def foo( ):
def bar( ):
return ‘hello’
return bar( )
a = foo( )
print (a)

输出:hello
按 Ctrl+C 复制代码

五、装饰器
实例1:创建一个装饰器,一个函数(两个参数)
用装饰器处理两个参数和,并打印
复制代码
def deco(func):
def warp(a1,a2):
print(‘a1+a2’,a1+a2)
return func(a1,a2)
return warp
@deco
def SUM(a1,a2):
print(a1,a2)
SUM(100,100)

输出 a1+a2 200
复制代码

实例2:

按 Ctrl+C 复制代码

def jxh(func):
def warp(n1,n2,n3):
num = n1 + n2
return func(0,num,n3)
return warp
#装饰器将前两个数字求和,函数本身第三个参数乘上这个和
@jxh
def SUM(num1,num2,num3):
print(num1,num2,num3)
print(num2 * num3)

SUM(10,2,3)

输出:0 12 3
按 Ctrl+C 复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值