python 面向对象的三大特性之一: 封装

1. 封装的好处:

  1. 将变化隔离

  2. 便于使用

  3. 提高复用性

  4. 提高安全性

  广义的封装: 实例化一个对象,给对象空间封装一些属性.

  狭义的封装: 私有制.

  私有成员:私有静态变量,私有方法,私有对象属性

  私有静态变量:

    实例化对象不能访问私有静态变量

    类名不能访问私有静态变量

    对于私有静态变量,类的外部不能访问

    对于私有静态变量,类的内部都可以访问

    子类(对象和类)不能访问父类的私有静态变量

  私有方法:

    类的内部可以访问

    类外部不能访问

    类的派生类(就是父类的方法)也不能访问

  私有对象属性:

    私有对象外部不能访问

    私有对象在内部能够访问

1. 私有静态变量

class Myclass:
    __book = ‘书‘    # 类中的前面静态变量加了 ‘_ _‘就变成了私有静态变量

class MyAlipay(Myclass):
    __money = 200
    music = ‘音乐‘
    def pay(self):
        # 对于私有静态变量,类的内部都可以访问
        print(self.__money) # 在内部对象访问私有类
        print(self.music)
        print(MyAlipay.__money) # 在内部类名访问私有类

        # 对于私有静态变量,"类的|"外部不能访问
        # print(self.__book)  # 子类(对象和类)不能访问父类的私有静态变量
        # print(MyAlipay.__book)

m = MyAlipay()
print(m.music)

# print(m.__money)    # 在外部对象不能访问私有变量
# print(MyAlipay.__money)   # 在外部类名不能访问私有变量

m.pay()
# 对于私有静量字段来说,只能在本类中内部访问,类的外部,派生类均不可访问.

2. 私有方法

class Myclass:
    __book = ‘书‘
    def __func(self):
        print(‘父类的私有方法‘)

class My(Myclass):
    sex = ‘不知‘
    def __func1(self):
        print(‘本类的私有方法‘)

    def func2(self):
        self.__func1()  # 在内部可以调用本类的私有方法
        self.__func() # 父类的私有方法,不可以调用

m = My()

# m.__func1() # 在类的外部不能调用
m.func2()   # 在类的内部可以调用,但是类的派生类(就是父类的方法)也不能调用

3. 私有对象属性

class Parent:

    def __init__(self,name,age):
        self.__name = name
        self.age = age

    def func(self):
        print(self.__name)

class Son(Parent):

    def func(self):
        print("in Son func")

    def func1(self):
        print(self.__name)

p1 = Parent("小王",12)
# print(p1.__name)    # 私有对象外部不能访问
p1.func()     # 私有对象在内部能够访问
print(p1.__dict__)
s1 = Son(‘小张‘,12)
# s1.func1()    # 不能访问父类的私有对象属性
# print(s1.__name)    # 不能访问父类的私有对象属性

原文地址:https://www.cnblogs.com/Pengdachui-1/p/11802251.html

时间: 2024-10-09 11:13:30

python 面向对象的三大特性之一: 封装的相关文章

Python 面向对象的三大特性:封装,继承,多态

# 面向对象的三大特性:封装,继承,多态 # 继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加 # 资源的继承,在Python中的继承是指能使用父类的资源,而不是说在子类也复制一份父类代码到子类中 class Animate: a = 1 # 公有的资源 _b = 2 # 受保护的资源 __c = 3 # 私有的资源 def t1(self): print("t1") def _t2(self): print("t2") def __t3(self): p

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ? 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以称为基类或超类,新建的类称为派生类或子类. ? 在Python中实现继承非常简单,在声明类的时候,在类名后面添加一个小括号,就可以完成继承关系.单纯的从代码的层面上来看当两个类具有相同的功能或者特征的时候就可以使用继承.提取一个父类,这个父类中编写者两个类相同的部分,然后两个类分别去继承这个类就可以

面向对象的三大特性之封装

# 面向对象的三大特性之封装 # 第一个层面的封装:类就是麻袋,这本身就是一种封装 # 第二个层面的封装:类中定义私有的,只在类内部使用,外部无法访问 # 约定一:任何以单下划线开头的名字都应该是内部的,私有的 # 约定二:双下划线开头的名字(如__name),外部无法直接访问,因为这种双下划线开头的名字已经被python转化为 _类名__name # 第三个层面的封装:明确区分内外,内部的实现逻辑,外部无法知晓,并且为封装到内部的逻辑提供一个访问接口给外部使用 # 如def getvalue(

java学习中,面向对象的三大特性:封装、继承、多态 以及 super关键字和方法的重写(java 学习中的小记录)

java学习中,面向对象的三大特性:封装.继承.多态 以及 super关键字和方法的重写(java 学习中的小记录) 作者:王可利(Star·星星) 封装     权限修饰符:public 公共的,private 私有的     封装的步骤:          1.使用private 修饰需要封装的成员变量.          2.提供一个公开的方法设置或者访问私有的属性              设置 通过set方法,命名格式:     set属性名();  属性的首字母要大写 访问 通过ge

java基础篇(一) ----- java面向对象的三大特性之封装

java面向对象的三大特性之封装:   封装(Encapsulation)是面向对象的一个重要特征,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节. 通俗的讲所谓封装就是将属性和方法捆绑到一起,封装到一个对象中去, 形成一个不可分割的独立单位,以及尽可能隐藏对象的内部结构,也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了. 如果形容一个人(假设把人看做一个类),我们可以用姓名.年龄,性别等来描述,如果不封

python——面向对象的三大特性

继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentCl

面向对象的三大特性(封装 继承 多态)

一丶封装 1 权限修饰符      可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default.           被public修饰的类可以在任意地方被访问:default类只可以被同一个包内部的类访问.      权限由大到小:public protected default(不写) private           被private修饰的成员只能在本类中访问,外界不能访问 2 set()/get()方法  (1)this关键字    a.可以用来调用变量,

python面向对象之三大特性

继承 先看个简单的例子了解一下继承. class Animal: # 父类 def __init__(self, name, age, department): self.name = name self.age = age self.department = department def running(self): print('%s可以奔跑!'% self.name) class Cat(Animal): # 括号里放要继承的父类 def __init__(self, name, age,

OC基础(五)面向对象的三大特性:封装、继承、多态

一.封装: 封装是屏蔽内部实现的细节, 仅仅对外提供共有的方法/接口 好处: 保证数据的安全性,将变化隔离 规范: 一般情况下不会对外直接暴露成员变量, 都会提供一些共有的方法进行赋值成员变量都需要封装起来 注:1.若一个类把自己的成员变量暴露给外部的时候,那么该类就失去对该成员变量的管理权,别人可以任意的修改你的成员变量. 2.封装中经常使用@property(即setter和getter方法) 3.在类的延展中对类进行分装,即: @interface NSObject () @end 二.继