python如何对一个属性或方法进行封装_Python-24 (什么是封装?)

Python是典型的面向对象的语言,所以具备着面向对象的三大特征:

封装:将属性与方法放到类的内部,通过对象访问属性和方法,隐藏功能实现的细节

继承:子类复用父类中已经定义的属性和方法

多态:不同子类对象调用相同父类方法,产生不同的执行结果

我们先来看封装具体是什么?封装其本质就是将 属性  、方法封装在一个类中;在使用类创建对象时,我们可以直接调用属性和方法,从而不用去关心类中具体实现的细节和过程。至此我们发现在探讨封装、继承、多态等特征时,频繁提及几个概念:类,对象,属性,方法;它们又具体是什么呢,我们先来考究一下。

#    1. 类与对象

类: 对一群具有相同特征(属性)或行为(方法)的事物统称,类是个抽象的概念,不能直接使用。

对象:由类创建出的具体实例,包含类的所有属性与方法,可以直接使用

怎么正确理解类与对象呢:

1> 类是模板,对象是类的具体体现。如飞机、汽车都是类,而C919/RAV4就是具体的对象。在这里飞机汽车都是抽象的概念,具体的型号C919/RAV4才是抽象概念的物化。

2> 类中定义了 属性与方法

3> 先有类,再有对象;类只有一个,对象有多个,不同对象间属性可能会不尽相同

4> 对象继承类的属性与方法

#     2. dir()内置函数

都说Python中一切皆对象,我们所看到的变量、数据、函数等都是对象,是对象就可以调用方法,那么我们怎么来验证?

1> 在标识符/数据后面输入 .后使用Tab,Python就会提示该对象能够调用的方法列表。这个在日常使用中比较频繁,尤其是在忘记某方法时可以快捷的来查询。

2> 使用内置函数dir(),将标识符/数据传递给dir,同样可以看到对象的属性及方法;这些格式为   __方法名__ 的方法都是Python提供的 内置方法/属性

通过以下在jupyter notebook中的验证,可以体会到Python中一切皆对象的含义了538cd3756c3c67ae15b475ba0589c00f9caead18.pngdir()

7c72a3f6b903a556d263d2c91491c3bbfd06be66.png常见的方法

#     3. 类与对象的创建

1> 类的设计注意几点:需求分析,定义清楚所有涉及的类,一般为名词

类的三要素:类名(大驼峰命名法)、属性(特征的描述)、方法(行为的描述)

在一个类中封装多个方法,通过该类创建的对象就可以直接调用这些方法

类的基本格式:

# 类的命名要符合大驼峰命名规则

class 类名:

def 方法1(self,参数):

pass

def 方法2(self,参数):

pass

注意:方法的定义格式与函数的定义基本一致,但注意方法中第一个参数必须为 self

2> 对象创建

基本格式:

对象变量名= 类名()

如下我们定义了一个  fish() 的类;然后调用类创建了一个 名为 Tom对象,最后使用 对象Tom 调用了fish类中 eat() 方法。4b504b52a2534333ff17afd56d096dbf2ba34433.png定义类、创建对象、调用方法

引用同一类所创建的对象是相互独立,是不相同的。d60ff700e6fb99c8a5b035e51586e445b7feb45c.png创建多个对象

#     4. self 参数的理解

self参数可以理解为就是对象本身;如下图我们使用直接外部赋值方法为对象 Tom 新增了 name属性,Tom调用了 eat()方法,在eat的self中就可以直接使用 self.name 来引用6430c642c50ea105a9862ee25b019413f981a025.pngself参数

#     5. 初始化方法

1> __ init__初始化

__init__:创建对象操作  var = 类名()时,会自动进行以下2个操作:为对象在内存中分配空间  --创建对象

为属性设置初始值 -- 初始化方法(init)

__init__ 方法 就是专门用来定义一个类 具有哪些属性的方法,定义默认的属性684d7f23d50ee8d36127465ce33563c3a25d67da.png__init__ 设置

2> 类的新增属性

类的属性要在类的内部定义,使用如下格式新增类的属性

self.属性名 = 形参

注意:

类的内部定义的变量可以在类的内部引用f6e858a40603c3775893386917e3870873f43ed8.png类的属性新增

3> __str__ 方法

若我们想要自己打印输出自定义的字符串,就需要使用 __str__方法

def__str__(self):

return string

注意:__str__ 必须返回一个字符串

#     6. 封装

我们了解了什么是类,什么是对象后再来具体看封装。这里再回顾一下什么是封装。

封装就是将属性与方法定义封装在抽象的类内部,在外部使用由类创建的对象,对象可以直接调用方法,而属性的细节和方法具体实现过程都是在类的内部。

封装属性与方法

如示例所示,属性:name、weight 方法:run、eat

同一个类创建的不同对象间相互独立,互不影响。ec3308027be2fb1982df0fd73b678173693438ca.png封装

这里我们就初步了解类与对象的关系,属性与方法的具体封装过程。后面有篇幅盈长将专门使用示例说明封装的细节。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值