访问限制

class Person(object):

    def __init__(self,name,age,height,weight,money):#使用类创建对象时候自动调用
        print("这里是init")
        print(name,age,height,weight)
        self.__money=money #加__不能被直接访问
        self.name=name
        self.age=age
        self.height=height
        self.weight=weight
        pass
    def run(self):
        print(self.__money)
        print("run")
    def eat(self,food):
        print("eat"+food)

    #通过内部的方法,去修改私有属性
    #通过自定义的方法实现对私有属性的赋值
    def setMoney(self,money):
        #对内部数据进行修改和数据过滤
        if money<0:
            money=0
        self.__money=money #可以创建内部函数对内部数据进行修改
    def getMoney(self):
        return self.__money

per=Person("hanmeimei",20,170,55,100000)
per.age=10
print(per.age)
# 如果要让内容的属性不被外部直接访问,就在属性前加两个下划线(__)
#在python在属性加下划线变成私有属性
# per.__money=0
#print(per.__money)#外部使用不能打印 不能够进行修改
per.run()#内部打印能够打印出__money的内部数据 外部无法取值和赋值 可以用内部函数对私有变量进行修改
#私有变量可以通过内部函数进行调取 并进行修改  外部不能进行修改
per.a=100
print(per.a)#添加新属性a

#调用内部函数
per.setMoney(10)
print(per.getMoney())
"""不能直接访问per.__money是因为Python解释把__money变成了
_Person__money变量   _类名__变量名,不同编译器可能存在的解释的变量名不一致
Python中  __XXX__属于特殊变量,可以被直接访问"""

"""_XXX 变量,实例变量 外部可以访问,意思是 可以被访问,但应不要直接访问"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值