self 应用

1.为了更好的理解面向对象编程,下面以“烤地瓜”为案例,进行分析

2.分析“烤地瓜”的属性和方法

1.示例属性如下:

·cookedLevel :这是数字;0~3表示还是生的,超过3表示半生不熟,超过5表示已经烤好了,超过8表示已经烤成木炭了!我们的地瓜开始时时生的

·cookedString :这是字符串;描述地瓜的生熟程度

·condiments :这是地瓜的配料列表,比如番茄酱、芥末酱等

2.示例方法如下:

·cook():把地瓜烤一段时间

·addCondiments():给地瓜添加配料

·__init__():设置默认的属性

·__str__():让print的结果看起来更好一些

3.定义类,并且定义__init__()方法

#定义`地瓜`类

classSweetPotato:

'这是烤地瓜的类'

#定义初始化方法

def__init__(self):

self.cookedLevel =0

self.cookedString ="生的"

self.condiments = []

4.添加"烤地瓜"方法

5.完整代码

3.应用:存放家具

1.分析

2.代码

总结:如果一个对象与另外一个对象有一定的关系,那么一个对象可用是另外一个对象的属性

4.保护对象的属性

如果有一个对象,当需要对其进行修改属性时,有2种方法

·对象名.属性名=数据---->直接修改

·对象名.方法名() ---->间接修改

为了更好的保存属性安全,即不能随意修改,一般的处理方式为

·将属性定义为私有属性

·添加一个可以调用的方法,供调用

运行结果:

总结

·Python中没有像C++中public和private这些关键字来区别公有属性和私有属性

·它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。

�5.__del__()方法

创建对象后,python解释器默认调用__init__()方法;

当删除一个对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法

结果:

总结:

·当有1个变量保存了对象的引用时,此对象的引用计数就会加1

·当使用del删除变量指向的对象时,如果对象的引用计数不会1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏学海无涯

18.Swift学习之属性与方法

11530
来自专栏黑泽君的专栏

c语言基础学习06_函数

============================================================================= 涉及...

53620
来自专栏海天一树

小朋友学C++(12):多态

(一) 先编写函数: #include <iostream> using namespace std; class Shape { protected:...

34260
来自专栏编程坑太多

js数组的拷贝赋值复制-你真的懂?

46130
来自专栏深度学习之tensorflow实战篇

mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js的数据类型修改

mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js的数据类型修改 Mongodb并不提供Alter table这样的语句或者工具修...

35940
来自专栏ESOFAR博客专栏

JavaScript权威指南 - 函数

函数本身就是一段JavaScript代码,定义一次但可能被调用任意次。如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法。用于初始化一个...

10130
来自专栏owent

C++ 新特性学习(四) — Bind和Function

木有错,这是C++,并且很方便地实现了委托 这就是传说中的绑定库和增强型的函数对象 接下来一个一个来

20610
来自专栏Ryan Miao

java中String的相等比较

首先贴出测试用例: ? 1 package test; 2 3 import org.junit.Test; 4 5 /** 6 * Crea...

31160
来自专栏xingoo, 一个梦想做发明家的程序员

复制控制---复制构造函数

复制构造函数 只有单个形参,而且该参数是对本类类型对象的引用。 主要用于: 1 根据另一个同类型的对象显示或隐式的初始化一个对象 string a = "abc...

20550
来自专栏余林丰

5.比较排序之归并排序(非递归)

  在上一节中讲解了归并排序的递归版《4.比较排序之归并排序(递归)》,通常来讲,递归版的归并排序要更为常用,本节简单介绍下非递归版的归并排序。思路和递归版相...

32190

扫码关注云+社区

领取腾讯云代金券