私有属性是对象不希望公开的属性,私有方法是对象不希望公开的方法。在定义私有属性和私有方法时,在属性或者方法前,加上__(两个下划线)
公有方法可以通过对象名直接调用,私有方法不能通过对象名直接调用,只能在属于对象的方法中通过self调用或在外部通过Python支持的特殊方式来调用

继承中私有属性和私有方法问题:子类不能继承父类的私有属性,不能调用父类的私有方法。

父类中的私有属性和私有方法:

1.子类对象不能在自己的方法内部,直接访问父类的私有属性和私有方法
2.子类对象可以通过父类的共有方法简介访问到私有属性或私有方法

3.私有属性和私有方法是对象的隐私,不对外公开,外界以及子类都不能直接调用

在外部访问父类的私有属性的方法


使用面向对象开发,第一步是设计类
使用类名()创建对象,创建对象的动作有两步

1.在内存中为 对象分配空间
2.调用初始化方法为对象初始化

对象创建后,内存中就有了一个对象的实实在在的存在
因此:

1.创建出来的对象叫做类的实例化
2.创建对象的动作叫做实例化
3.对象的属性叫做实例属性

4.对象调用的方法叫做实例方法

在程序执行时:

1.对象各自拥有自己的实例属性
2.调用对象的方法可以用self
访问自己的属性 ,调用自己的方法

结论:
1.每一个对象都有自己独立的内存空间

2.多个对象的方法,在内存中还有一份,在调用方法时,需要把对象的引用传递到方法内部

类是一个特殊的对象:

Python中一切皆对象

在程序运行中,类会被加载到内存;在python中,类是一个特殊的对象–类对象

除了封装实例的属性和方法外,类对象还可以拥有自己的属性和方法
通过类名.
的方式可以直接访问类的属性或者调用类的方法

【实例演示】

类属性就是针对类对象定义的属性,使用赋值语句在class关键字下方可以定义类属性,用于记录这个类的相关特性
类方法就是针对类对象定义额方法,在类方法内部就可以直接访问类属性或者调用其他类方法

语法如下:
@classmethod
def 类方法(cls):
pass

【1】概念
在开发时候,如果需要在类中封装一个方法,这个方法:

即不需要访问实例属性或者调用实例方法,也不需要访问类属性或者调用类方法
此时可以将这个方法封装成一个静态方法

【2】基本语法

语法如下:
@staticmethod
def 静态方法():
pass

静态方法需要用修饰器@staticmethod来标识,告诉解释器这是一个静态方法

通过类名,调用静态方法

需求如下:



案例小结:
1.实例方法:方法内部需要访问实例属性
2.类方法:方法内部需要访问类属性

3.静态方法:方法内部不需要访问实例属性和类属性

Q:如果方法内部,既要访问实例属性,又徐亚访问类属性,应定义什么方法?
A:实例方法

单例:让类创建的对象,在系统中只有唯一的一个实例

使用类名()创建对象的时候,python的解释器首先会调用方法为对象分配空间

是一个由object基类提供的内置的静态方法,主要有两个作用:

1.在内存中为变量分配空间

2.返回对象的引用

python的解释器获得对象的引用后,新托福将引用作为第一个参数传给方法

负责给对象分配空间 负责给对象初始化

Python中的私有属性私有方法、类属性类方法以及单例设计模式的更多相关文章

  1. java软件设计模式——单例设计模式中的【饿汉式】与 【懒汉式】示例

    以下为单例设计模式中的两种经典模式的代码示意: 单例设计模式(spring框架IOC,默认创建的对象都是单例的): 饿汉式: public class SingleClass { private Si ...

  2. Python的程序结构[0] -> 属性/Property[0] -> 类属性、实例属性和私有属性

    类属性.实例属性和私有属性 Python中类的属性主要包括类属性,实例属性和私有属性,下面是对三种属性的简单介绍 类属性 / Class Property 类属性在__init__()之外初始化,在外 ...

  3. Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

    一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强…” 什么是面 ...

  4. 用私有构造器或者枚举类型强化SingleTon(单例)属性

    单例(singleton)就是一个只实例化一次的类.使类成为单例可能会使它的测试变得困难,因为除非它实现了作为其类型的接口,否则不可能用模拟实现来代替这个单例.下面是几种实现单例的方法: 1.共有静态 ...

  5. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  6. 【python学习笔记】9.魔法方法、属性和迭代器

    [python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...

  7. Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性

    什么是对象和类 https://www.cnblogs.com/poloyy/p/15178423.html 什么是 Python 类.类对象.实例对象 https://www.cnblogs.com ...

  8. python中类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法

    类对象.类属性与实例对象.实例属性的区别 在Python中一切皆是对象,类是一个特殊的对象即类对象,描述类的属性称为类属性.类属性在内存中只有一份,在__init__外部定义. 通过类创建的对象称为实 ...

  9. python中对象、类型和元类之间的关系

    在python中对象.类型和元类构成了一个微妙的世界. 他们有在这个世界里和平共处,相辅相成.它们遵循着几条亘古不变的定律: 1.python中无处不对象 2.所有对象都有三种特性:id.类型.值 3 ...

随机推荐

  1. 华为视频编辑服务(Video Editor Kit),助力开发者高效构建应用视频编辑能力

    视频编辑服务(Video Editor Kit)是华为开放给开发者快速构建视频编辑能力的服务,提供视频导入.编辑处理.特效渲染.视频导出.媒体资源管理等一站式视频处理能力.视频编辑服务为全球开发者提供 ...

  2. 开源基于docker的任务调度器pipeline,比`quartzs` 更强大的分布式任务调度器

    pipeline 分布式任务调度器 目标: 基于docker的布式任务调度器, 比quartzs,xxl-job 更强大的分布式任务调度器. 可以将要执行的任务打包为docker镜像,或者选择已有镜像 ...

  3. 10分钟物联网设备接入阿里云IoT平台

    前言最近尝试了一下阿里云IoT物联网平台,还是蛮强大的.在此记录一下学习过程.本教程不需要任何外围硬件,一台电脑和一根能上网的网线即可.算是一篇Hello World了.先上效果图 第一章 准备工作1 ...

  4. 过渡——transition

    ① 设置参与过渡的属性 transition-property:  ;      all / transform / 参与过渡的属性 ② 设置过渡的时长 transition-duration:  s ...

  5. anyRTC iOS端屏幕录制开发指南

    一. 概述 实现直播过程中共享屏幕分为两个步骤:屏幕数据采集和流媒体数据推送.前对于 iOS 来说,屏幕采集需要系统的权限,受制于iOS系统的限制,第三方 app 并没有直接录制屏幕的权限,必须通过系 ...

  6. 【LeetCode】209. 长度最小的子数组

    209. 长度最小的子数组 知识点:数组:前缀和:二分法:双指针:滑动窗口 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小 ...

  7. Hadoop 3.1.1 - Yarn 服务 - 快速开始

    快速开始 本文描述了如何用 Yarn 服务框架在 Yarn 上部署服务. 配置和启动 HDFS 和 Yarn 组件 首先启动 HDFS 和 Yarn 的各个组件.为启用 Yarn 服务框架,添加以下参 ...

  8. vue页面初始化

    HTML: <div id="app"> <input type="" class="app" v-model=" ...

  9. 使用AVPro Video在Unity中播放开场视频(CG)笔记

    游戏中的开场CG(播放视频),采用的插件为AVPro Video1.x(和W的版本一致),Unity版本为2018.4.0f1 Asset Store:AVPro Video - Core Andro ...

  10. 我写一篇文章就是要批评CSDN! 因为蓝湖3.0的更新

    对于开发者,经常会使用,学习到各种环境语言和工具 我们不只是在不断的在搬运知识,更多时候我们也是在 分享我们学到的"新知识", 当我们有幸觉得自己发现了新的知识与技术时,作为分享者 ...