是在程序出来的时候是没有类的
===== a.py =====
a =10
name ='zhangsan'# 需要计算机计算的是数字print(name +':'+str(a))# zhangsan:10# 程序可以适用多种情况
b =12
c =13
d =15print(a + b + c + d)# 50
l =[a, b, c, d]# for循环遍历出来
一个列表数据相加:# 可以通过一个函数来进行数据求和defcount(ll):
count =0for i in ll:
count += i
print(count)#50
count(l)====需要两个列表相加起来====
第一种方法:
l =[a, b, c, d]# for循环遍历出来
l2 =[3,4,5,6]defcount(ll):
count =0for i in ll:
count += i
print(count)return count
res1=count(l)
res2=count(l2)print(res1+res2)
第二种方法:
l =[a, b, c, d]# for循环遍历出来
l2 =[3,4,5,6]
count=0defc(ll):global count
for i in ll:
count += i
print(count)
c(l)#50
c(l2)#68
# 更改的是局部的数据# 闭包 接近类# 把要操作的数据 和函数封装起来deffunc():
num =0
count =0defc(ll):nonlocal count
nonlocal num
for i in ll:
count += i
num +=1defshow():nonlocal count
nonlocal num
print(count)print(num)return c
# 类 数据+操作数据的方法classfunc1():# 主类# 数据 方法
num =0
count =0defc(self,ll):for i in ll:
self.count += i
self.num +=1defshow(self):print(self.count)print(self.num)classfunc2():#混入类 只有方法 没有数据defavg(self):print(self.count / self.num)classfunc3(func2, func1):pass
f = func3()
f.c([1,2,3,4])
f.c([2,3,4,5])
f.show()
f.avg()=== b.py 调用
from a import func,func1
l1=[2,3,4,5]
l2=[3,4,5,6]
f=func1()
f.c(l1)
f.c(l2)
f.show()
classPerson():
name =''
age =0def__init__(self, name):
self.name = name
defsay(self):print('我是:%s,我%s岁'%(self.name, self.age))classDog():
name =''
age =0def__init__(self, name):
self.name = name
defjiao(self):print('汪汪汪,旺旺旺')classCar():
model ='BMW'
p1 = Person('li')
p2 = Person('zhao')
p3 = Person('wang')
c1 = Car()
d1 = Dog('xiaohuang')
l =[p1, p2, p3, d1, c1]for obj in l:# 对象 属性名/方法 返回 方法 或者 Noneifgetattr(obj,'say',None):#自省
obj.say()elifgetattr(obj,'name',None):print(obj.name +'不会说话')else:print('他没有名字,也不会说话')getattr(obj,'say',None) 自省 确保实例对象调用的方法中有此方法,没有走另一步
用在as_view()getattr(self,'post',错误的方法)