大家有没有想我呢?

今天讲一下类的一些概念:

公开属性 私有属性 基本方法 私有方法

直接上代码

class Makeup():
brand = 'MAC' #公开属性
__producer = 'US' #私有属性 def basic(self): #公开方法
water = 'pat slightly1'
essense = 'pat slightly2'
print('water:%s, essense=%s' % (water,essense)) def __advance(self): #私有方法
sunscreen = 'pat slightly3'
foundation = 'apply a little for times'
LoosePowder = 'up to you'
print('sunscreen:%s, essense:%s, LoosePowder:%s' % (sunscreen, foundation, LoosePowder))

什么是公开属性、公开方法,什么是私有属性、私有方法呢?

我们平常用的是公开属性、公开方法,没有双下滑开头。

观察一下上面的代码,私有的属性or方法,都是双下滑线开头。

下面看一下它们在用法上的区别:

gg = Makeup()
print('公开属性 : %s' % gg.brand)
print('公开方法 : %s' % gg.basic)
公开属性 : MAC
公开方法 : <bound method Makeup.basic of <__main__.Makeup object at 0x00000092336DC278>>
print('私有属性 : %s' % gg.__producer)
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-4-f097d14a7a25> in <module>()
----> 1 print('私有属性 : %s' % gg.__producer) AttributeError: 'Makeup' object has no attribute '__producer'
print('私有方法 :%s' % gg.__advance)
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-5-becc18ed0559> in <module>()
----> 1 print('私有方法 :%s' % gg.__advance) AttributeError: 'Makeup' object has no attribute '__advance'

Obviously,在类的外部,是不可以调用私有方法的哦。

下面试试在类的内部调用属性:

class Makeup2():
def __init__(self, brand, producer):
self.brand = brand
self.__producer = producer def open(self): #公开方法
print('公共方法调用公共属性 : %s' % self.brand) #类的内部调用公共属性
print('公共方法调用私有属性 : %s' % self.__producer) #类的内部调用私有属性 def __private(self): #私有方法
print('私有方法调用公有属性 : %s' % self.brand) #类的内部调用公共属性
print('私有私有属性 : %s' % self.__producer) #类的内部调用私有属性
gg2 = Makeup2('LANCOME', 'Big BOSS')
gg2.open()
公共方法调用公共属性 : LANCOME
公共方法调用私有属性 : Big BOSS
gg.__private()
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-19-5025310145e8> in <module>()
----> 1 gg.__private() AttributeError: 'Makeup' object has no attribute '__private'

Anyway,私有方法始终是大佬,别想调用她。(好高冷哦!)妹子好难撩哦……

但是公共方法下,公共属性、私有属性都可以调用。嗯,最喜欢跟你这种 Beauty 合作了。

好了,关于对象的介绍暂时写到这里

Python 类和对象(3)的更多相关文章

  1. python类与对象各个算数运算魔法方法总结

    1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...

  2. python 类和对象的属性

    python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象. 1. 父类的对象属性会被子类的对象继承. 2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性 ...

  3. 一文讲全了Python 类和对象内容

    摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan  . Pytho ...

  4. python类、对象

    python类.对象 学习完本篇,你将会深入掌握 什么是类,对象 了解类和对象之间的关系 能独立创建一个People(人类),属性有姓名.性别.年龄.提供一个有参的构造方法,编写一个show方法,输出 ...

  5. python 类、对象、方法、属性

    在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...

  6. python类、对象、方法、属性之类与对象笔记

    python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗, ...

  7. python类与对象基本语法

    面向对象编程的2个非常重要的概念:类和对象. 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念--类. 类就相当于制造飞机时的图纸,用它 ...

  8. python 类和对象

    类和对象 类 1.类的组成    数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用  属性引用:类名.属性(增删改查)   实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...

  9. Python类和对象

    目录 类与对象 其他方法 继承 经典类和新式类 派生 组合 接口.归一化设计与抽象类 继承实现的原理 子类中调用父类的方法 指名道姓 super()方法 多态与多态性 封装 单下划线开头 双下划线开头 ...

  10. python类与对象的组合与继承

    1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于“有一个”的场景中,继承用于“是一个”的场景 ...

随机推荐

  1. Nginx负载均衡中4层代理和7层代理对比

    1.4层代理和7层代理什么意思? 这里的层是OSI 7层网络模型,OSI 模型是从上往下的,越底层越接近硬件,越往上越接近软件,这七层模型分别是物理层.数据链路层.网络层.传输层.会话层.表示层.应用 ...

  2. 机器学习第一章——NFL的个人理解

    第一篇博客,想给自己的学习加深记忆.看到书中第一个公式时,本来想直接看证明结果就好,然鹅...作者在备注上写:这里只用到一些非常基础的数学知识,只准备读第一章且有“数学恐惧”的读者可跳过...嘤嘤嘤, ...

  3. 使用说明(2S)

    [Build Status] 功能 系统代理设置 PAC 模式和全局模式 [GFWList] 和用户规则 支持 HTTP 代理 支持多服务器切换 支持 UDP 代理 支持插件 下载 下载 [最新版]. ...

  4. 解决无/var/log/messages 问题

    转载于:https://blog.csdn.net/C_Major/article/details/51321684 1 内核编程insmod后,Ubuntu查看日志无/var/log/message ...

  5. TypeScript 迭代器(iterator)和生成器(generator)

    ⒈迭代器(iterator) 1.可迭代性 当一个对象实现了Symbol.iterator属性时,我们认为它是可迭代的. 一些内置的类型如 Array,Map,Set,String,Int32Arra ...

  6. python学习-19 字典

    字典dict 1.dic = {key:value,key:value} 字典有{ }括住,字典的value可以是任意值,字典的key的值不包括列表和字典 di = {"age": ...

  7. 笔记-5:mysql数据更新

    1.插入数据 1.1 插入完整的数据 # 语法格式: INSERT INTO tb_name(column_list) VALUES(value_list); tb_name:指定要插入数据的表名. ...

  8. WUSTOJ 1277: 小吉吉读书(Java)

    1277: 小吉吉读书 题目   有一本 n 页的书,每天都看 ai 页,已知星期 k 买的书,问星期几能看完?更多内容点击标题. 分析   统计出一个星期能看 a 页,看了 a 页又会回到买书的那一 ...

  9. (三)mybatis之通过接口加载映射配置文件

    1.1  需求 通过(二)在全局配置文件 mybatis-configuration.xml 通过 <mappers> 标签来加载映射文件,那么如果我们项目足够大,有很多映射文件呢,难道我 ...

  10. C#获取Excel表格所有sheet名(Epplus)

    原文:C#获取Excel表格所有sheet名(Epplus) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog. ...