zoukankan      html  css  js  c++  java
  • 洗礼灵魂,修炼python(33)--面向对象编程(3)—特殊类方法__init__,公有属性,私有属性

    在上一篇博文里,传入参数时,是在实例化对象后且在调用方法时才传入参数,感觉是不是有点繁琐对吧?可以在实例化的时候就传入参数吗?可以的,这就是本篇博文的要讲到的构造器——__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中的私有变量,都是伪私有

  • 相关阅读:
    php之工厂模式
    PHP 给GIF 缩略图实例代码
    WGS84 Mercator project转换的算法(C#)
    .net Enum用法
    Google Maps API编程资源大全
    结对作业
    使用Lightbox制作照片条
    使用css3中transition的页面切换
    使用css3中transition的页面切换(继续创新版)
    iframe中父窗口获取子窗口的元素
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/7676447.html
Copyright © 2011-2022 走看看