python-类的封装(私有属性,私有方法)
2021-01-23 01:13
标签:sel 怎么办 turn else number div 保护 不可 += 对类方法的封装-私有方法 积分是不能随意累加的,所以积分的方法外部不能随意修改值,如果要查看或者修改积分的值必须调用私有方法 __add_number()方法 python-类的封装(私有属性,私有方法) 标签:sel 怎么办 turn else number div 保护 不可 += 原文地址:https://www.cnblogs.com/shanshan-test/p/12885740.html
封装的定义
对属性的封装-私有属性
class Integral(object):
# 积分类
def __init__(self, validity, number, business):
"""
积分类初始化
:param validity: 积分的有效期
:param number: 积分的分数
:param business: 哪块业务的积分
"""
self.validity = validity
self.number = number
self.business = business
jifen = Integral("2020-04-05", "100", "淘宝")
print(jifen.validity) # 此时我在外面随便可以访问到有效期
jifen.validity = "2020-03-01"
print(jifen.validity) # 此时我在外面可以随意的修改积分的有效期,但是你想想在业务的角度上看这样合理么?是不是需要规范一下,不能让他修改这个有效期
class Integral(object):
# 积分类
def __init__(self, validity, number, business):
"""
积分类初始化
:param validity: 积分的有效期
:param number: 积分的分数
:param business: 哪块业务的积分
"""
self.__validity = validity
self.number = number
self.business = business
jifen = Integral("2020-04-05", "100", "淘宝")
print(jifen.__validity) # 此时我在外面随便可以访问到有效期
jifen.validity = "2020-03-01"
控制台输出:
AttributeError: ‘Integral‘ object has no attribute ‘__validity‘,找不到这个属性
class Integral(object):
# 积分类
def __init__(self, validity, number, business):
"""
积分类初始化
:param validity: 积分的有效期
:param number: 积分的分数
:param business: 哪块业务的积分
"""
self.__validity = validity
self.number = number
self.business = business
def get_validity_values(self):
# 这样做有什么好处呢?
# 1,在外部不可以直接访问
# 2,要想修改有效期,只能通过我的方法,进行逻辑判断后才可以,防止了外部造假
if self.business == ‘淘宝‘:
self.__validity = "2100-04-05"
else:
self.__validity = "1998-04-05"
return self.__validity
jifen = Integral("2020-04-05", "100", "淘宝")
print(jifen.get_validity_values())
控制台输出:
2100-04-05
class Integral(object):
# 积分类
def __init__(self, validity, number, business,is_buy):
"""
积分类初始化
:param validity: 积分的有效期
:param number: 积分的分数
:param business: 哪块业务的积分
:is_bug: 是否购买了东西
"""
self.__validity = validity
self.number = number
self.business = business
self.__is_bug = is_buy
def __add_number(self):
"""
私有方法:如果买东西了,积分增加20,如果没有购买东西,告知用户:您没有购买东西,积分不累加
:return:
"""
if self.__is_bug == str(1):
self.number += 20
else:
print("您没有购买东西,积分不累加")
return self.number
def get_number_values(self):
return self.__add_number()
jifen = Integral("2020-04-05", 100, "淘宝",‘2‘)
print(jifen.get_number_values())
私有属性or私有方法外部肯定不能访问么》?
class Integral(object):
# 积分类
def __init__(self, validity, number, business,is_buy):
"""
积分类初始化
:param validity: 积分的有效期
:param number: 积分的分数
:param business: 哪块业务的积分
:is_bug: 是否购买了东西
"""
self.__validity = validity
self.number = number
self.business = business
self.__is_bug = is_buy
def __add_number(self):
"""
私有方法:如果买东西了,积分增加20,如果没有购买东西,告知用户:您没有购买东西,积分不累加
:return:
"""
if self.__is_bug == str(1):
self.number += 20
else:
print("您没有购买东西,积分不累加")
return self.number
def get_number_values(self):
return self.__add_number()
jifen = Integral("2020-04-05", 100, "淘宝",‘2‘)
jifen._Integral__add_number()
jifen._Integral__validity = "2020-04-06" # 对私有属性的值进行修改
控制台输出:
您没有购买东西,积分不累加
上一篇:python ipython使用
下一篇:算法学习:莫队
文章标题:python-类的封装(私有属性,私有方法)
文章链接:http://soscw.com/index.php/essay/45675.html