Python 类和对象

网易云课堂——零基础入门学习Python 讲得极好极好!

对象=属性+方法, Python中一切都是对象
面向对象(OO)的特征:封装、继承、多态。 面向对象的编程思想其实是受现实世界启发!

我这就简单的三言两语的记录一下:

类,要掌握几个概念:
self,保留类实例化后的具体实例的属性和方法,实例化后,即便del 原Class, 实例仍保有删除前的类的所有属性和方法,因为类定义的属性和方法是静态变量static,只有当程序退出时才会从内存中释放!
继承(子类继承父类,比如:金鱼,鲨鱼,金枪鱼继承鱼,因为都属于鱼) ,注意:如果子类定义了和父类同名的属性或方法(包括__init__),会自动覆盖父类;可是如果子类必须要用到__init__方法那要怎么办呢?
方法有两个:

  1. 调用未绑定的父类方法
  2. 使用super函数(可以自动帮我们找到分类的方法和参数),赞!!!尤其是当多重继承时(尽量少用。。因为容易出现不可预见的bug)。
class DerivedClassName(BaseClassName):
      ...

组合(比如:水池可以组合(或者说调用)鱼,乌龟两个类,因为水池里面有鱼也有龟) 写法:不用像上面的继承那样在类定义时的括号里写上BaseClassName,而是非常简洁的,写()就行,然后在需要的地方直接写需要组合的子类名称就行,这要求子类(鱼和乌龟)在次之间已经定义了。

======================================================================================
python面向对象编程:
魔法方法,通常以双下划线包围,最主要的比如__init__(self,param1,param2…),相当于C++中的构造函数
共有和私有,python中没有特殊的关键字来表示共有或私有;python通过name mangling(名字改编,名字重整)技术来实现共有或私有,在Python中定义私有变量或函数只需要在名字前加两个下划线,那么这个函数或者变量或函数就是私有的了。

example:

Class Person:
     #共有属性/变量
     name="小甲鱼"
p=Person()
p.name  #可以访问,输出"小甲鱼"
--------------------------------------------------
Class Person:
     #私有属性/变量
     __name="小甲鱼"
p=Person()
p.name  #不可访问,报错 no attribute 'name'

事实上,Python实现name mangling是通过做一些手脚,即把__name的名字改成 _Person__name

Class Person:
     #私有属性/变量
     __name="小甲鱼"
p=Person()
p._Person__name  #可以访问,输出"小甲鱼"

所以Python的私有其实是伪私有,仍然可以被外部访问到!

可以使用.__dict__查看对象的属性(返回一个字典,key为属性名,value为值) 可以查看类属性,或者类实例化后的属性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值