1.类属性的增删改查:
class Chinese: #以下均是属性 country = "China" def __init__(self,name): self.name = name def play_bsktball(self,bsktball): print("%s 正在打 %s"%(self.name,bsktball)) #类查看 print(Chinese.country) #类中修改数据属性 #类修改 Chinese.country = "ChinaChina" p1 = Chinese("ALEX") #声明类实例 print(p1.__dict__) print(p1.country) #类增加 Chinese.dang = "dang" print(Chinese.dang)#调用dang的三种方式 print(p1.dang) print(p1.__dict__) #类中只含有一个属性"name":"ALEX" 实例基于引用,先从自身字典找,其次从类字典中找 print(Chinese.__dict__["dang"]) #类删除 del Chinese.dang del Chinese.country print(Chinese.__dict__) #类中修改函数属性 #增加函数属性 def eat_food(self,food): print("%s 正在吃 %s"%(self.name,food)) Chinese.eat = eat_food print(Chinese.__dict__) p1.eat("noodle") #修改函数属性 def test(self,play_bsktball): print("修改函数%s中内容" %play_bsktball) Chinese.play_bsktball = test p1.play_bsktball("paly_bsktball")
2.实例属性的增删改查
class Chinese: #以下是实例属性的增删改查 country = "China" def __init__(self,name): self.name = name def play_bsktball(self,bsktball): print("%s 正在打 %s"%(self.name,bsktball)) p1 = Chinese("alex") #定义类 print(p1.__dict__) #输出实例字典 #查看 print(p1.name) print(p1.play_bsktball) p1.play_bsktball("bsktball") #增加 p1.age=18 print(p1.age) print(p1.__dict__) print(p1.age) print(Chinese.__dict__) #类中没有实例key,value #实例只有数据属性,因为实例出发__init__,所以只能引用__init__中的内容。 #调用实例函数属性的两种方法 def test(self): print("我是来自实例p1的函数属性") def test1(): print("我是来自实例p1实例的函数属性") p1.test=test p1.test1=test1 print(p1.__dict__) p1.test(p1) p1.test1() #不要修改底层的属性字典 p1.__dict__["sex"]="male" print(p1.__dict__) print(p1.sex) #修改 p1.age=19 print(p1.age) print(p1.__dict__) #删除 del p1.age print(p1.__dict__)
3.定义一个类,等同定义一个作用域
#定义一个类,只当一个作用域去用,类似于C语言中的结构体 class MyData: pass x=10 y=20 MyData.x=1 MyData.y=2 print(x,y) print(MyData.x,MyData.y) print(MyData.x+MyData.y)
4.对象与实例属性(区分用“.”调用和用普通变量调用1)
class Chinese: country="China" def __init__(self,name): self.name=name def play_ball(self,ball): print("%s 正在打 %s"%(self.name,ball)) p1=Chinese("alex")#实例化p1 print(p1.country)#访问类中country print(p1.name)#“name”:"alex" 访问实例中name p1.country="日本人" print(Chinese.country) #China print(p1.country) #日本人 class Chinese: country="country" def __init__(self,name): self.name=name def play_ball(self,ball): print("%s 正在打 %s"%(self.name,ball)) p1=Chinese("alex") print(p1.country) #首先在找country,其次从类中找,如果类有对象,输出,比如类中有country=country,那么输出country #类中设定作用域有要求,要加“.”,如果不加,只代表简单的变量 country= "country" class Chinese: def __init__(self,name): self.name=name print("--->",country) def play_ball(self,ball): print("%s 正在打 %s"%(self.name,ball)) p1=Chinese("alex") #区分调用变量时,加点与不加点的调用方式 country="china----outside" class Chinese: country = "中国" def __init__(self,name): self.name=name print("----->",country) def play_ball(self,ball): print("%s 正在打 %s"%(self.name,ball)) print(Chinese.__dict__) p1=Chinese("alex")#区分带“.”输出为普通变量输出, print(Chinese.country) print(p1.country)
5.类与实例属性(区分用“.”调用和用普通变量调用2,结合列表)
class Chinese: country = "china" L = ["a","b"] def __init__(self,name): self.name = name def play_ball(self,ball): print("%s 正在打 %s"%(self.name,ball)) p1=Chinese("alex") print(p1.L) p1.L=[1,2,3] #向实例中添加[1,2,3] print(Chinese.L) #输出仍然是[a,b] print(p1.__dict__) p1.L.append("c") print(p1.__dict__)#p1没有变 print(Chinese.L)#变的是累类中的L
6.类属性+类实例属性例子1(from 老男孩作业day024)
#------------------------------------------------------------------类属性增删改查 class School: #数据属性供函数属性引用 defi = "这是学校类" def __init__(self,name,position,type): self.name = name self.posi = position self.type = type def geo_position(self): # print("%s学校在"%(self.name,self.position)) print("%s学校在%s" % (self.name,self.posi)) def zhiwei_name(self,principal,president): principal = principal president = president print("nit自2018年起,%s的校长是%s,%s的书记是%s" %(self.name,president,self.name,president)) def enrollment(self,enrol_mon,number): print("%s每年在%s招生学生%s" %(self.name,enrol_mon,number)) print(School.defi) print(School.__dict__) #查 p1=School("nit","宁波","2500") print(p1.__dict__) p1.geo_position() # School("1","2","3") School.position() School.zhiwei_name() p1.zhiwei_name("章献民","胡征宇") #数据属性 #增 School.tuition_fee = "5000-6000" print(School.__dict__) print(p1.tuition_fee) #改 p1.tuition_fee = "6000" print(School.tuition_fee) #删 print(p1.__dict__) print(School.__dict__) del School.tuition_fee del p1.tuition_fee print(p1.__dict__) #函数属性 #增加函数属性 def add_znj(name,age,type): print("%s是%s,2019年%s岁"%(name,age,type)) School.znj = add_znj print(School.znj) School.znj("znj","19","female") #修改函数属性 def change_znj(name,age,type): print("------这是修改后znj的info-------") print("%s是%s,2019年%s岁" %(name,age,type)) School.znj = change_znj School.znj("znj","18","female") print(School.__dict__) #删除函数属性内容 if School.__dict__["znj"]: print("True") del School.znj #---------------------------------------------------------------实例属性增删改查 class School: #数据属性供函数属性引用 defi = "这是学校类" def __init__(self,name,position,type): self.name = name self.posi = position self.type = type def geo_position(self): # print("%s学校在"%(self.name,self.position)) print("%s学校在%s" % (self.name,self.posi)) def zhiwei_name(self,principal,president): principal = principal president = president print("nit自2018年起,%s的校长是%s,%s的书记是%s" %(self.name,president,self.name,president)) def enrollment(self,enrol_mon,number): print("%s每年在%s招生学生%s" %(self.name,enrol_mon,number)) p1 = School("nit","ningbo","public") #定义类 print(p1.__dict__) #输出实例字典 #查看 print(p1.name) print(p1.geo_position()) p1.zhiwei_name("zxm","hzy") #增加 p1.plan="快速融入浙大五位一体校区" print(p1.plan) print(p1.__dict__) print(School.__dict__) #类中没有实例key,value #实例只有数据属性,因为实例从__init__出发,所以只能引用__init__中的内容。 #修改 p1.plan="加快浙大宁波五位一体校区建设" print(p1.plan) print(p1.__dict__) #删除实例中的key,value del p1.plan print(p1.__dict__) #调用实例函数属性的两种方法 def test(self): print("znj在发视频过来") def test1(self): print("等一下再回复znj") p1.test=test p1.test1=test1 print(p1.__dict__,p1.test1) p1.test(p1) p1.test1(p1)