python面试题中常被考到有关类与继承的若干概念

参考链接:
https://blog.csdn.net/weixin_45393094/article/details/105306788
https://www.cnblogs.com/nevermore29/p/10843981.html

面向对象三大特性

封装、继承、多态

封装

封装的意义

  • 属性和方法放到一起做为一个整体,然后通过实例化对象来处理;
  • 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了;
  • 对类的属性和方法增加访问权限控制。

私有权限

  • 类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问;
  • 类的私有属性 和 私有方法,都不会被子类继承,子类也无法访问;
  • 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用。

什么是类的内部事情?
什么时候不想让子类访问到内容?

如何修改私有属性的值

对于修改对象的属性值,有两种方法:

  • 对象名.属性名 = 数据 -----> 直接修改
  • 对象名.方法名() ----> 间接修改

私有属性不能直接访问,所以无法通过第一种方式修改,一般的通过第二种方式修改私有属性的值:定义一个可以调用的公有方法,在这个公有方法内访问修改。

多态

所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”。

  • DuckType: 虽然我想要一只"鸭子",但是你给了我一只鸟。 但是只要这只鸟走路像鸭子,叫起来像鸭子,游泳也像鸭子,我就认为这是鸭子。
  • Python的多态,就是弱化类型,重点在于对象参数是否有指定的属性和方法,如果有就认定合适,而不关心对象的类型是否正确。

通俗解释:Python并不关心你是否继承了父类,也不关心你对类属性和方法的参数中类型是否一致,弱化了对继承和参数类型的限制。
换种说法:多态的概念在python中被“同化”了,尽管了弱化了对继承和参数类型的限制,但多态依然在python中实现了

多态的好处

  1. 增加了程序的灵活性
    以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)
  2. 增加了程序的可扩展性
    通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用

更多理解

“开闭”原则 https://www.liaoxuefeng.com/wiki/1016959663602400/1017497232674368

类属性和实例属性

类属性:就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似
公有的类属性:在类外可以通过类对象和实例对象访问

相关验证实验可访问参考链接中的内容

  1. 如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。
  2. 如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。

类方法和静态方法

类方法
@classmethod
类方法,方法中的self是类本身,调用方法时传的值也必须是类的公有属性,就是说类方法只能操作类本身的公有字段
静态方法
@staticmethod
静态方法,通过类直接调用,不需要创建对象,不会隐式传递self

相关验证实验可访问参考链接中的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值