class Student(): count=0 def __init__(self,name,age,address): self.name=name self.age=age self.address=address Student.count+=1 def pt(self): print(self.name,self.age,self.address) zs=Student('张三',18,'北京') f=open('a.txt','w') f.write(str(Student.count)) f.write(':') buff=dict(name=zs.name,age=zs.age,address=zs.address) f.write(str(buff)) f.write('\n') ls=Student('张二',28,'上海') f.write(str(Student.count)) f.write(':') buff=dict(name=ls.name,age=ls.age,address=ls.address) f.write(str(buff)) f.write("\n") ww=Student('张大',38,'北京') f.write(str(Student.count)) f.write(':') buff=dict(name=ww.name,age=ww.age,address=ww.address) f.write(str(buff)) f.close() f=open('a.txt','r') line=f.readline() obj=[] while len(line)>0: zidian=eval(line[2:]) # zidian=eval(line[2:].strip('\n)) x=Student(zidian['name'],zidian['age'],'中国'+zidian['address']) obj.append(x) line=f.readline() f.close() for x in obj: x.pt() class Student(): count=0 def __init__(self,name,age,address): self.name=name self.age=age self.address=address Student.count+=1 def pt(self): print(self.name,self.age,self.address) zs=Student('张三',18,'北京') f=open('a.txt','w') f.write(str(Student.count)) f.write(':') buff=dict(name=zs.name,age=zs.age,address=zs.address) f.write(str(buff)) f.write('\n') ls=Student('李四',28,'上海') f.write(str(Student.count)) f.write(':') buff=dict(name=ls.name,age=ls.age,address=ls.address) f.write(str(buff)) f.write('\n') ww=Student('张大',38,'北京') f.write(str(Student.count)) f.write(':') buff=dict(name=ww.name,age=ww.age,address=ww.address) f.write(str(buff)) f.close() f=open('a.txt') content=f.readline() obj=[] while len(content)>0: zd=eval(content[2:].strip('\n')) x=Student(zd['name'],zd['age'],'中国'+zd['address']) # print(type(x)) # for x2 in x: # print(x2) obj.append(x) # buff=[zd['name'],zd['age'],'中国'+zd['address']] # obj.append(buff) content=f.readline() f.close() for x in obj: x.pt() # # f.open('a.txt','r') # line=f.readline() # obj=[] # while len(line)>0: # zd=eval(line[2:].strip('\n'))# 字典 # zd['name'] # line=f.readline() #********************************************** class People(): def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def say(self): print(self.name,'大家好,我今年%d岁'%self.age) class Student(People): def __init__(self,name,age,sex,score): super().__init__(name,age,sex) # 这里讲继承,子类中调用父类属性的方法。即 super(). self.score=score def talk(self): print(self.name,'我考了%d分'%self.score) zs=Student('张三',18,'男',99) zs.say() # 这里说明子类调用父类方法 zs.talk() #******************************************** class People(): def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex self.__yan=2.0 print(self.__yan) def say(self): print(self.name,"大家好,我今年%d岁"%self.age) print(self.__yan) class Student(People): def __init__(self,name,age,sex,score): super().__init__(name,age,sex) self.score=score def talk(self): print(self.name,'我考了%d分'%self.score) zs=Student('张三',18,'男',99) # print(zs.__yan) # print(People.__yanzs.say() # 私有的属性,不能通过对象zs.__yan直接访问,但是可以通过方法访问 __yan只能出现在class People()那段代码里面 zs.talk() #******************************************** class A(): def AA(self): print('AA') class B(): def BB(self): print('BB') class C(A,B): # 这里说明子类可以继承多个父类,写法class zilei(fulei1,fulei2,fulei3): def CC(self): print('CC') c=C() c.AA() c.BB() c.CC() #******************************************** class A(): def AB(self): print('AA') class B(): def AB(self): print('BB') class C(A,B): def AB(self): print('CC') c=C() c.AB() # 重载。 子类和父类 方法同名时,使用子类的。 print(C.mro()) #******************************************** class People(): count=0 def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex People.count+=1 def say(self,n1,n2): print(self.name,'的年龄是',self.age) print(n1+n2) class Student(People): def __init__(self,name,age,sex,score): super().__init__(name,age,sex) self.score=score def talk(self,n3,n4): print(self.name,'的成绩是',self.score) print(n3*n4) zs= Student('张三',18,'男',888) zs.say(3,4) zs.talk(2,5) #******************************************** class People(): def say(self): print('开个玩笑') class Student(People): def say(self): print('hhe') s=Student() s.say() #******************************************** class People(): def say(self): print("fu lei") class Student(People): def say(self): super().say() # super().__init__(name,age,sex) 也就是说 super(). 引用父类的属性和方法 print('zi lei') s=Student() s.say() #******************************************** class A(): def __init__(self): print('A开始') print('A结束') class B(A): def __init__(self): print('B开始') print('B结束') class C(A): def __init__(self): print('C开始') print('C结束') class D(B,C): def __init__(self): print('D开始') print('D结束') d=D() print(D.mro()) # D开始 D结束 [<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>] #*********************************************************** class A(): def __init__(self): print('A开始') super().__init__() print('A结束') class B(A): def __init__(self): print('B开始') super().__init__() print('B结束') class C(A): def __init__(self): print('C开始') super().__init__() print('C结束') class D(B,C): def __init__(self): print('D开始') super().__init__() # super(). 其中super()就相当于父类,也就是调用父类的东西。这里调用父类的初始化函数, print('D结束') d=D() print(D.mro()) # 菱形继承。面试题,考试题。你自己看着办。 #***********下面一个是 多态 的例子************************************ class Dog(): def jiao(self): print("汪汪") class Cat(): def jiao(self): print('喵喵,一起学猫叫') class Pig(): def jiao(self): print('哼哼') def jiao(who): who.jiao() d=Dog() c=Cat() p=Pig() jiao(d) jiao(c) jiao(p) #*********************************************** class People(): def __init__(self,age,sex,name): self.__age=age self.sex=sex self.name=name def __sayAge(self): print(self.__age,'岁') # 私有属性,只能在类里面用。 def hehe(self): print(self.name) self.__sayAge() # 私有的方法,只能在类里面用。 zs=People(age=18,sex='nan',name='张三') zs.hehe() # zs.__sayAge() # 私有方法,不能在类外面用。只能在类里面用。所以这里会报错 print(dir(People)) # 查看People里面的方法 和 属性 print(dir(zs)) #*********************************************** class People(): def __init__(self,name,age,sex): self.name=name self.__age=age self.sex=sex def __sayAge(self): print(self.__age,'岁') def hh(self): print(self.name) self.__sayAge() zs=People('张三',18,'nan') zs.hh() #zs.__sayAge() #*********************************************** class A(): x=10 class B(A): pass class C(A): pass print(A.x) #10 print(B.x) # 10 print(C.x) # 10 B.x=12 print(A.x) # 10 print(B.x) # 12 print(C.x) # 10 A.x=14 print(A.x) # 14 print(B.x) #12 上面添加属性 B.x=12 , 这时B和A有同名属性x,父类改动A.x=14,子类用自己的 print(C.x) # 14 #*********************************************** class A(): __slots__ = ('name','age','sex','address','ok') # 输入slot,出来的,作用是限制类的属性,这类的属性最多就这些。 def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def say(self): print('say it') a=A('张三',19,'男') a.address='山东' print(a.name,a.age,a.sex,a.address) a.say() #*********************************************** class A(): def __init__(self): pass @property def name(self): return self.right_name @name.setter def name(self,daijiancha_name): print('进来了') if daijiancha_name.isalpha(): print("correct") else: print('wrong type of names') self.right_name='hanmeimei' def wr_name(self): self.name=input("请输入英文名字") a=A() a.wr_name() """ #*********************************************** # class A(): # def __init__(self): # pass # @property # 属性。修饰下面的方法,此符号修饰的函数,当属性使用 # def data(self): #get方法,获取值 # return self.right # @data.setter # def yaoPanDuanDeShuXing(self,canShu): #set设置值 # print("开始判断") # if canShu<18: # print('cuowu') # self.right=20 # else: # print('zhengque') # self.right=canShu # # def aaa(self): # 在这个方法(函数)中 # self.yaoPanDuanDeShuXing=int(input("请输入:")) # a=A() # 跳入初始化 # a.aaa() # print(a.data) #******************************************** # class Jiancha(): # def __init__(self): # pass # @property # def data(self): # return self.right # @data.setter # def data(self,wrong_maybe): # if wrong_maybe <18: # self.right=20 # else: # print("hege") # pass # def start(self): # self.data=int(input("待检查的data")) # obj=Jiancha() # obj.start() #********************************************* class Lei(): def __init__(self): pass @property # 属性。修饰下面的方法,此符号修饰的函数,当属性使用 def yaoPanDuanDeShuXing(self): #get方法,获取值 return self.right @yaoPanDuanDeShuXing.setter def yaoPanDuanDeShuXing(self,canShu): #set设置值 print("开始判断") if canShu<18: print('cuowu') self.right=20 else: print('zhengque') self.right=canShu def aaa(self): # 在这个方法(函数)中 self.yaoPanDuanDeShuXing=int(input("请输入:")) duixiang=Lei() # 跳入初始化 duixiang.aaa() print(duixiang.yaoPanDuanDeShuXing)
面向对象,封装,继承,多态
猜你喜欢
转载自blog.csdn.net/weixin_44675370/article/details/88540051
今日推荐
周排行