Python面向对象之封装

对象成员的封装

公共成员

  1. 对象成员属性:__init__方法中进行定义:所有对象各有一份
  2. 对象成员方法:对对象成员属性的访问及操作

私有成员

  1. 私有属性:—般情况下不被外界访问,只供内部使用,防止外部修改。在定义属性的时候,使用两个下划线开头;本质类—旦见到这种内容,会修改他的名称(_类名__属性)
  2. 私有方法:不对外开放的方法,只供类中其他的方法进行调用

类成员的封装

类的属性

  1. 定义的位置为类开始的位置
  2. 所有的对象公用一份数据
  3. 在创建对象以前就定义完成了
  4. 用来记录所有对象共同属性的内容

类的方法

  1. 定义类方法的时候需要加@classmethod
  2. 定义类方法参数的第一个是cls
  3. 类方法只能访问类属性,不能访问对象属性

属性和方法的使用

1. 类名.属性(方法)
2. 对象名.属性(方法)

静态方法

定义

@staticmethod def 静态方法名称(参数列表)

说明

不能使用类成员也不能使用对象成员

@property

概念

创建一个私有对象属性,访问的时候按照公共属性进行访问,访问方便,而且内部可以添加—个函数对修改或者访问进行限制

@property

查看属性内容自动调用该方法

@property def 属性名称(self)
# 函数内容使用:
self.__属性名称

@setter

用来修改属性内容的(如果不需要可以省略)

@属性.setter def 属性名称(self,参数列表)
# 函数内容使用
self.__属性名称
  1. 类外不能修改该属性
  2. 类内修改属性的时候需要使用self.__属性

示例

# 定义一个类A,存在三个变量
# a:外部随意看﹐随意改
# b:外部随意看﹐改必须满足值为>3的整数
# c:外部不能看﹐也不能该﹖必须使用方法进行看和改
class A(object):
    def __init__(self, a, b, c):
        self.a = a
        self.__b = b
        self.__c = c

    @property
    def b(self):
        return self.__b

    @b.setter
    def b(self, new_b):
        if new_b > 3:
            self.__b = new_b

    def get_c(self):
        return self.__c

    def set_c(self, new_c):
        self.__c = new_c


a1 = A(1, 2, 3)
print(a1.a)
a1.a = 4
print(a1.a)

print(a1.b)
a1.b = 5
print(a1.b)

print(a1.get_c())
a1.set_c(6)
print(a1.get_c())

运行结果:

1
4
2
5
3
6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写bug如流水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值