python快速入门-12-面向对象-隐藏、继承

一、通过“私有属性”实现数据的隐藏

隐藏数据的作用之一可以防止通过对象直接给实例属性赋值的这种方式产生的出错
比如

class Cat(object):
    def __init__(self, new_name, new_age):
        self.name = new_name
        self.age = new_age

    def print_info(self):
        print("我叫%s,今年%s了" % (self.name, self.age))


# 创建猫对象
cat = Cat("波斯猫", 4)
# 调用方法
cat.print_info()
# 尝试修改属性
cat.age = -10
# 调用方法
cat.print_info()

age不应该是-的,通过设置属性为私有属性
添加额外对属性操作的方法可以解决

二、使用方法

在Python中,如果想要设置为私有的属性,那么仅仅需要在定义属性时在前面加两个下划线即可__

class 类名(object):
    def __init__(self):
        self.name = "王老师"
        self.__age = 18  # 这个属性就是私有属性

这是增加了私有属性的效果

class Cat(object):
    def __init__(self, new_name, new_age):
        self.name = new_name
        self.__age = new_age

    def print_info(self):
        print("我叫%s,今年%s了" % (self.name, self.__age))

    def set_age(self,setage):
        if  setage>0 and setage<110:
            self.__age=setage


# 创建猫对象
cat = Cat("波斯猫", 4)
# 调用方法
cat.print_info()
# 尝试修改属性
cat.set_age(-10)
# 调用方法
cat.print_info()

通过使用方法来进行修改,就可以在方法中进行数据合法性的检查

通过可以将属性变为私有属性,这样就防止了通过对象直接操作属性时可能带来的隐患__

一、通过“私有属性”实现功能函数的隐藏

用来限制方法被外部调用的作用私有方法,但是可以在类的内部被调用
定义方法和上面一样 在函数前加两个下划线即可

class BankService(object):
    def __bank_2_bank(self, money):
        print("这里是银行之间的转账代码....")
        return True

    def transfer(self):
        money = int(input("请输入转账金额"))
        if money > 100000:
            if self.__bank_2_bank(money):
                print("转账成功")
            else:
                print("转账失败...")
        else:
            print("都没钱,还转什么啊!自己留着花吧!")


bank_service = BankService()
bank_service.transfer()  # 可以调用,是公有方法

可以发现私有方法__bank_2_bank(self, money):是不可以直接在对象中调用的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值