python学习第n天(bilibili学习日)002 异常处理面向对象编程
异常处理
1 try: 2 程序 3 except Exception as 异常名称err: 4 print(err) 5 异常处理部分 6 7 让异常后的程序继续运行
类,实例化一个类,实例化后会自动触发 自动运行
new_a ,和new_b就是形参,函数里的普通变量
self.a = new_a 把new_a的值取出来放到self.a里面去,相当于给属性添加
self.b = new_b
self ~详细解释
1 #说明为何要用self 2 class BB: 3 def printBB(): 4 print("不写self") 5 BB.printBB() 6 #为什么不这样调用,假设把这个实例化后 7 bb = BB() #实例化后,对象调用BB时,会自动塞多一个,相当于 bb.printBB(bb) 8 #bb.printBB() #会报错printBB() takes 0 positional arguments but 1 was given接受0个位置参数,但给出了1个 9 class CC: 10 def setxy(self,x,y): 11 self.x = x 12 self.y = y 13 def printxy(self): 14 print(self.x,self.y) 15 dd = CC() 16 print(dd.__dict__) #查看对象所拥有的属性 17 #outpu: {} 18 print(CC.__dict__) 19 #实验 20 dd.setxy(4,5) 21 print(dd.__dict__) 22 #output:{'x': 4, 'y': 5} 23 print(CC.__dict__) 24 #去掉类对象 25 del CC 26 #再拿来调用 27 print(dd.printxy()) 28 ee = CC()
1 class cl1: 2 pass 3 print(cl1) 4 a = cl1() #实例化一个类 5 print(a)
class Cat: # def __init__(self,newcalar): # self.color = newcalar def eat(self): self.eat = "eat fish" def play(self): print("play ") mao = Cat() mao.eat() #调用一下ear这个方法 print(mao.eat) print(mao.play) #没调用play这个方法,所以打印出了内存地址 #output: #eat fish #<bound method Cat.play of <__main__.Cat object at #0x0000027F079A57F0>>
构造函数(构造方法)__init__这个函数就是构造函数,意思就是本来就有的属性
__init__(self,参数) 类里面的属性
#构造方法默认名字init print("I am cl2") cl2() #构造函数实际意义,初始化。 # 给类加上参数,给构造方法加上参数 # class cl3: def __init__(self,name ,age ,job ): print("my name is "+name+" my age is "+age+" my job is "+job) cl3('tom','12','worker')#实例化 cl3('dage','dage','dage') a = cl3('a','b','c')
属性和方法
属性:类里面的变量self.属性名 类里面的变量 就是self.**
1 class cl4: 2 def __init__(self,name,job): 3 self.myname = name #定义变量,类里的属性 4 self.myjob = job 5 c4= cl4('li','teacher') 6 print(c4) 7 print(c4.myname)#调用类的属性 8 print(c4.myjob)
类的方法:相当于类里面的函数:def 函数吗(self,参数)
1 class cl5: 2 #def __init__(self):#(init构造方法,目的是初始化) 3 def myfunc1(self,name): 4 print("this is my func1 " + name) 5 c5 = cl5() #实例化一下 如果不实例化?? 6 #c5.myfunc1() 7 c5.myfunc1("hello") #在这里加上了参数,也要相应的在函数里调用参数
类:达到cl5同样效果,理解就是
1 class cl6: 2 def __init__(self,name): #把名字初始化掉 3 self.myname = name #把name赋给myname 4 def myfunc1(self): #调用时通过myname属性输出 5 print("hello"+self.myname) 6 c6 = cl6('li') 7 c6.myfunc1()
类的继承与重置:
继承:把一个或多个类特征取出来
重载:在子类重新定义