py---面向对象(包括异常处理、反射、单例模式)

这篇博客详细介绍了Python的面向对象编程,包括封装的概念、类的创建和构造方法,多继承及方法查找策略,类成员的类型,如字段和方法。还探讨了成员修饰符、特殊成员、元类、异常处理、反射以及单例模式的实现。内容深入浅出,适合Python初学者和进阶者学习。
摘要由CSDN通过智能技术生成

python是函数式编程+面向对象编程

面向对象三大特性:封装、继承、多态,而python是原生多态。

面向对象适用场景:如果多个函数中有一些相同的参数时,适用面向对象编程。

1.创建类(封装)

class Foodef foo(self,arg):
            pass

创建中间人:
注意self永远代指中间人即调用方法的对象(在继承里也是),中间人可以存值,这就是封装的一个小例子,当然实际并不这样封装。

obj=Foo()
obj.foo()

在obj=类名()这一步时,做了两件事:一是创建了obj对象,二是通过对象执行类中的一个特殊方法,自动执行。

特殊方法名为构造方法,初始化

def __init__(self):
       pass
特性:类名()--->自动执行构造方法

————————————————————————————

class Bar:
       def __init__(self,age):
            self.age=age
            #在这里进行age的封装(公用对象)
       def foo(self,arg):
            print(self,self.name,self.age,arg)
z=Bar(21)#21是给__init__传参数
z.name='axe'#给self封装一个name='axe'
z.foo(666)
结果:
<__main__.Bar object at 0x000034243....> axe 21 666

2.继承:

链式查找方法,父类—子类(基类—派生类)

class grad_father:
      def a(self):
            pass
class father(grad_father):
      def b(self):
            pass
class son(father):
      def c(self):
            pass
obj=son()

obj.a()--->可以调用
obj.b()--->可以调用
obj.c()--->可以调用

————————————————————————————
如果不想调用父类的方法,只需要在子类里重名父类的方法名即可。

class father:
      def b(self):
            pass
class son(father):
      def c(self):
            pass
      def b(self):
            pass
obj=son()
obj.b()--->这里调用的是子类自己的b()方法

————————————————————————————
如果想子类和父类重名的都调用,有两种方式。

(一)
class father:
      def b(self):
            pass
class son(father):
      def c(self):
            pass
      def b(self):
            super().b()
            pass
(二)
class father:
      def b(self):
            pass
class son(father):
      def c(self):
            pass
      def b(self):
            father.b(self)
            pass

————————————————————————————

多继承:

深度优先:左侧优先,一条道走下去查找。
广度优先:同一个根源时,根源最后执行(c3算法)
新式类采取两者结合的方式,不是同一个根源,那么就采用深度优先。

obj.mro()#查找继承顺序,只在新式类中,当然python3都是新式类
class f1:
        def a(self):
              pass
class f2:
        def a(self):
              pass
class s(f1,f2)
obj=s()
obj.a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值