'''
import csv
dic={'zhangsan':66,'lisi':77,'sunwu':88,'laowang':99,'qiangxianke':100}
with open('foo2.csv', 'w', newline='',encoding='utf8') as f:
f_csv = csv.writer(f)
for i in dic.items():
f_csv.writerow(i)
class student:
def __init__(self,path):
self.path=path
self.sheet=[]
with open(path,'r',encoding='utf8') as f:
f_csv = csv.reader(f)
for row in f_csv:
self.sheet.append([str(row[0]),int(row[1])])
def __getitem__(self,index):
return self.sheet[index]
a=student('foo2.csv')
print(a)
for i in a:
if i[0] == 'qiangxianke':
print("qxk的成绩是",i[1])
# 继承
# 多态性
# oop 的三个概念
# 封装性:防止里面被外面破坏
#xx:公有变量
#_xx:内部变量 protected
#__xx:私有变量 prival
#__xx__:
class test:
def __init__(self):
self.num=10 #
self._num=20 #可以强制使用,但是不能跨文件使用
self.__num=30 #无论如何都不能调用
t=test()
print(t.num)
print(t._num)
# print(t.__num)
t.__num=40 #添加了名为“__num”的变量,对原来的内部变量无任何影响
print(t.__num) #和函数内部的变量不一样
print(t.__dir__())
name = 'l'
age = 19
sex = 'male'
name = 'lisi'
ahe = 20
sex = 'female'
class person:
def __init__(self,name,age,sex):
self.__name = name
self.__age = age
self.__sex = sex
a = person('zhangsan',19,'male')
b = person('lisi',20,'male')
print(f'姓名:{a.__name},年龄:{a.__age},性别:{a.__sex}')
class person:
def __init__(self):
pass
def set_age(self,age):
self.__age=age
def get_age(self):
return self.__age
a = person()
a.set_age(30)
print(a.get_age())
class person:
def __init__(self):
pass
def set_age(self,age):
if age>=200:
raise ValueError("年纪太大了") ####
else:
self.__age=age
def get_age(self):
return self.__age
a = person()
a.set_age(300)
print(a.get_age())
class person:
def __init__(self):
pass
def set_age(self,age):
if age>=200:
raise ValueError("年纪太大了") ####
else:
self.__age=age
def get_age(self):
return self.__age
def del_age(self):
del __age
x = property(get_age,set_age) #建立一种关联
a = person()
a.x=100
print(a.x)
class person:
def __init__(self):
pass
def set_age(self,age):
if age>=200:
raise ValueError("年纪太大了") ####
else:
self.__age=age
def get_age(self):
return self.__age
def del_age(self):
del self.__age
x = property(get_age,set_age,del_age,'我是说明文档') #建立一种关联
a = person()
a.x =100 #删除了
del a.x
print(a.x)
import sys
sys.getrefcount(a) #被应用的次数
class person:
def __init__(self):
pass
def set_age(self,age):
if age>=200:
raise ValueError("年纪太大了") ####
else:
self.__age=age
def get_age(self):
return self.__age
def del_age(self):
del self.__age
x = property(get_age,set_age,del_age,'我是说明文档') #建立一种关联
a = person()
a.x =100
print(a.x)
help(person)
help(property)
class person:
def __init__(self):
pass
@property #基础属性
def age(self,age):
self.__age=age
@age.setter
def get_age(self,age):
return self.__age
@age.deleter
def del_age(self,age):
del self.__age
a = person()
a.x =100
#del a.x #删除了
print(a.x)
class person:
def __init__(self,name,age):
self.name = name
self.age=age
def run(self):
print(f'{self.name}is running')
class man(person):
weight =100
pass
a=man('zhangsan',20)
print(a.name,a.age)
a.run()
# print(run()) ==> 这个会有none输出
print(a.weight)
#重载 :java里常见
# assert
class father:
def add(selfself,a):
print('{} in father '.format(a+5))
class son(father):
def add(selfself,b):
assert isinstance(b,int),'parameter must be int type' #断言:bool判断
super().add(b) #
a=son()
print(isinstance(father(),father))
print(isinstance(father(),son))
# print(type(father(),son)) ==>错
a.add(123)
#raise 捕捉异常
i=7
while i<6:
if i>2:
raise ValueError('值太大了!')
i+=1
print(i)
#try except
b =0
c =1
try:
a=b/c
print(a)
except ZeroDivisionError:
print('分母为0')
finally:
print('无论对错我都执行')
'''
#多态 不同类型的相同数据接口....
#操作符的重载
class person:
def __init__(self,d):
print(d)
self.data = d
def add(self,d):
return self.data+d.data
class son(person):
def __add__(self,d):
print('son',d)
return super().add(d)
a=son(1)
b=son(2)
print(a+b)
print(a.add(b))
#多态 不同类型的相同数据接口....
#操作符的重载****
class person:
def __init__(self,d):
print(d)
self.data = d
def add(self,d): #这个d指的一个类
return self.data+d.data
class son(person):
def __add__(self,d):
print('son',d)
return super().add(d) #super指父类
a=son(1)
b=son(2)
print(a+b) #调用的a的构造函数a+b
print(a.add(b))
class Dog(object):
def __init__(self,name):
self.name = name
@property
def eat(self):
print('%s is eating'%self.name)
d =Dog("chendongha")
d.eat #封装不需要加括号
class upc(object):
def __init__(self,xueyuan):
self.xueyuan = xueyuan
lisi = upc("计通学院")
zhangsan = upc('地学院')
def fun(*args):
print(args)
def func(**args): #两个传出字典类型
print(args)
func(a=1,b=2,c=3)
fun(1,2,3)
def function(arg,*args,**kwargs):
print(arg,args,kwargs)
function(6,7,5,5,a=2) #顺序不能变
from math import pi,e
print(pi,e)
class student:
def __init__(self,name,age,score):
self.name=name
self.age=age
self.score=score
def get_name(self):
return self.name
def get_age(self):
if isinstance(self.age,int):
return self.age
else:
raise ValueError('please input int value')
def get_course(self):
for num in self.score:
if not isinstance(num,int):
raise ValueError('error')
a=max(self.score)
return a
zm=student('zhangming',20,[90,80])
print(zm.get_name())
print(zm.get_age())
print(zm.get_course())
class laoshi:
def __init__(self,a):
self.a=a
def handle(self,b):
return self.a+b
class stu:
def __init__(self,c):
self.c=c
def handle(self,d):
return d+super().hanlde(d)
w=laoshi(2)
print(w.handle(3))
'''