在上一篇博文里,传入参数时,是在实例化对象后且在调用方法时才传入参数,感觉是不是有点繁琐对吧?可以在实例化的时候就传入参数吗?可以的,这就是本篇博文的要讲到的构造器——__init__(两边双下划线)

__init__(注意两边是双下划线,后面不再提示)

1.什么是__init__

初始化方法,也叫构造器,会在特定条件下自动调用其内的方法

除了有构造器的作用,和其他方法没什么区别

2.例子:

class People(object):
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    def introduce(self):
        print('我叫%s,今年%s,%s'%(self.name,self.age,self.sex))

结果:

这里要注意了,如果使用了构造器,那么在实例化对象时就要传入参数,不能像之前在调用方法时再传入了,这里和python2是一样的。可以对比一下:

使用构造器:

不使用构造器:

不使用构造器时实例属性是调用方法再传入参数,也就是在方法之下的,所以必须在调用时才赋值,你可能想问,我在之前赋值呢?

果然是报错的。

当有构造器后,定义类时,可以带括号;可以不带括号;带括号后可以给一个站位参数,也可以不给

1)不带括号:

2)带括号不传参:

3)带括号传参:但是只能传object参数(其实这里前面说过了,带object参数和不带参数不带括号是等价的)

所以,注意分清使用构造器和不使用构造器的区别就行。而使用构造器可以带来诸多方便(上面的例子已经可以看出)。在实际的开发中还是建议使用构造器

其实你有没有觉得,把人类和这一板块提到的类做抽象的比较,有很多相似的地方对不?每个人都不同,都是独一无二的,各自都会有自己的小秘密不希望其他任何人知道,那么类也有这样的情况——公有属性和私有属性

公有属性和私有属性

1.什么是公有,什么是私有

就是字面意思,公有就是大家都能访问,都知道的属性,私有属性就是类的独特属性,不公开的。

2.怎么判断哪个公有,哪个是私有

不能被直接访问的就是私有属性,在前面用了那么多,能够直接调用就可以访问的就是私有属性

3.定义公有和私有

因为类是我们人为定义的,所以公有属性和私有属性也是人为定义的,且看例子:

那么你看出来了,双下划线和单下划线开头的原则上都不能被外部访问的。但是单下划线是伪私有属性,给上全称就可以访问了,但是双下划线不行,前面加双下划线就是我们的私有属性了

其实,双下划线也是伪私有属性,一样可以访问的,请看:

只要按照格式:实例化对象._类名__私有属性名 就可以访问。

并且再看一个例子:

像这样利用调用方法来返回私有属性一样可以访问。

所以,双下横线和单下横线开头的原则上都不能被外部访问,但是在python中的私有变量,都是伪私有

洗礼灵魂,修炼python(33)--面向对象编程(3)—特殊类方法__init__,公有属性,私有属性的更多相关文章

  1. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  2. Python之面向对象编程学习

    不知不觉,学到了python的面向对象编程思想.今天我们来讨论下面向对象编程的思想. 顾名思义,面向对象,就是面向于对象,这里所说的对象不是你现实生活中你的女朋友,你的老婆,你的爱人,在编程的世界里面 ...

  3. Python:面向对象编程3 定制类(有更新)

    Python:面向对象编程3  定制类(有更新) ⚠️本文主要内容为对Data model相关知识点的提取学习记录.(内容来自文档和部分网页教程案例) ⚠️:这个连接指向<流畅的python&g ...

  4. 【Python】[面向对象编程] 访问限制,继承和多态

    1.在Python中两个下划线__ 就是带便私有属性 private   注意已两个下划线开头并且结尾的 如 __init__ 是特殊变量,不是私有变量 2.多态,Python的“file-like ...

  5. python基础-面向对象编程

    一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程 2.函数式编程 3.面向对象编程 二.编程进化论 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 ...

  6. python之面向对象编程

    1.面向对象介绍: 世界万物,皆可分类 世界万物,皆为对象 只要是对象,就肯定属于某种类 只要是对象,就肯定有属性 2. 面向对象的几个特性: class类: 一个类即对一类拥有相同属性的对象的抽象, ...

  7. Python(面向对象编程—1)

    class tst: l=[] x=1 a=tst() b=tst() a.l.append('a') b.l.append('b') a.x='a' b.x='b' print(a.l,a.x) # ...

  8. python的面向对象编程

    面向对象编程是一种程序的范式,它把程序看成是对不同对象的相互调用,对现实世界建立的一种模型. 面向对象编程的基本思想,类和实例.类用于定义抽象对象,实例根据类的定义被创建出来. 在python当中我们 ...

  9. 一文看懂Python的面向对象编程

    之前在网络上看了很多关于面向对象的编程详解,还是不够过瘾,所以决定自己动手写一篇. 面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计. 类(Class) ...

  10. python学习——面向对象编程

    关于python面向对象编程,请参考: https://blog.csdn.net/zhoudaxia/article/details/23341261

随机推荐

  1. hive中的子查询改join操作(转)

    这些子查询在oracle和mysql等数据库中都能执行,但是在hive中却不支持,但是我们可以把这些查询语句改为join操作: -- 1.子查询 select * from A a where a.u ...

  2. 如何把checkbox做成radio一样的单选效果

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>复 ...

  3. sublime text 前端开发插件安装和配置

    前端开发sublimeconfig mac配置 此文件目录中文件主要是关于sublime的插件配置,快捷键配置,主题和字体配置. 插件列表 所有插件都可以使用Package Control安装,具体的 ...

  4. Spring Cloud Consul使用——配置中心

    1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  5. 怎么样在windows命令下创建一个没有文件名的文件?

    直接上图 echo ' ' >> .aa //创建一个空字符的 .aa 的文件

  6. Authorization With Pundit

    rails 权限管理gem PunditAuthorization With Pundit

  7. react-native绑定优酷SDK-附效果图和源码

    ReactNative绑定优酷SDK需要用到两部分知识: 优酷本身的sdk绑定: RN与原生界面的交互: 效果: RN版本:0.49.3 代码更新日期:2017.10.26 下文也根据绑定需要分为两部 ...

  8. ADNI数据

    之前整理的数据相关内容 数据的模态有 Clinical Data(临床数据) Genetic(基因数据) MRI PET BIOSPECIMEN(生物样本) 各模态数据的内容.特点 Clinical ...

  9. 突发奇想想学习做一个HTML5小游戏

    前言: 最近一期文化馆轮到我分享了,分享了两个,一个是关于童年教科书的回忆,一个是关于免费电子书的.最后我觉得应该会不敌web,只能说是自己在这中间回忆了一下那个只是会学习的年代,那个充满梦想的年代. ...

  10. asp.net mvc5轻松实现插件式开发

    在研究Nopcommece项目代码的时候,发现Nop.Admin是作为独立项目开发的,但是部署的时候却是合在一起的,感觉挺好 这里把他这个部分单独抽离出来, 主要关键点: 确保你的项目是MVC5 而不 ...