zoukankan      html  css  js  c++  java
  • Python中的私有属性私有方法、类属性类方法以及单例设计模式

    私有属性是对象不希望公开的属性,私有方法是对象不希望公开的方法。在定义私有属性和私有方法时,在属性或者方法前,加上__(两个下划线)
    公有方法可以通过对象名直接调用,私有方法不能通过对象名直接调用,只能在属于对象的方法中通过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的解释器获得对象的引用后,新托福将引用作为第一个参数传给方法
    负责给对象分配空间 负责给对象初始化

    这里写图片描述

    这里写图片描述

  • 相关阅读:
    hdoj2187:悼念512汶川大地震遇难同胞 (贪心)
    2.0其它之Transform详解,以及UIElement和FrameworkElement的常用属性
    2.0外观之样式, 模板, 视觉状态和视觉状态管理器
    2.0图形之Ellipse, Line, Path, Polygon, Polyline, Rectangle
    2.0控件之ListBox, MediaElement, MultiScaleImage, PasswordBox, ProgressBar, RadioButton
    2.0画笔之SolidColorBrush, ImageBrush, VideoBrush, LinearGradientBrush, RadialGradientBrush
    2.0图形之基类System.Windows.Shapes.Shape
    2.0交互之鼠标事件和键盘事件
    2.0控件之ScrollViewer, Slider, StackPanel, TabControl, TextBlock, TextBox, ToggleButton
    2.0交互之InkPresenter(涂鸦板)
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/9896036.html
Copyright © 2011-2022 走看看