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()

 

类的继承与重置:

继承:把一个或多个类特征取出来

重载:在子类重新定义

posted @ 2019-01-22 18:03  章十慕珊·  阅读(200)  评论(0编辑  收藏  举报