案例:跑步减肥

面向对象的开发逻辑是先抽象出来

代码示例:

class Person:
    """
    定义一个人类
    """
    def __init__(self,name,weight):
        """
        初始化人的姓名和体重
        """
        self.name = name
        self.weight = weight

    def __str__(self):
        """
        格式化输出
        """
        return "我的名字是[{}],通过努力我现在的体重是[{}]斤".format(self.name,self.weight)

    def eat(self):
        print("吃饱了再减肥吧~!")
        self.weight += 1

    def run(self):
        print("生命在于运动,跑起来吧~!!")
        self.weight -= 1

# 实例化对象
lili = Person("丽丽",80)
print(lili)
lili.run()
lili.run()
lili.run()
print(lili)
lili.eat()
print(lili)

# 实例化另一个对象
zhangsan = Person("张三",100)
print(zhangsan)
zhangsan.eat()
zhangsan.eat()
zhangsan.eat()
print(zhangsan)
zhangsan.run()
print(zhangsan)

私有属性

定义:在名字前面加上两个 _ _ ,添加了私有属性后,该属性将不能被修改;

在Python中,没有觉得的私有,其实当我们去定义私有属性的时候,会对这个属性名字去做处理

会在这个属性的前面加上类名

属性名处理方式:属性名 改成格式 类名 _属性名

代码示例:

class Woman:
    """
    创建一个女人类
    """
    def __init__(self,name,age):
        """
        初始化姓名和年龄
        """
        self.name = name
        # self.age = age
        # 添加一个私有属性
        self.__age = age

    def __str__(self):
        """
        格式化输出
        """
        return "我的名字叫[{}],我今年{}岁!".format(self.name,self.__age)

# 实例化对象
lili = Woman("丽丽",19)
print(lili)

lili.age = 38
print(lili)

用__dict__查询私有属性的格式方法

print(lili.__dict__)
"""
输出结果:{'name': '丽丽', '_Woman__age': 19, 'age': 38}
私有属性的原理:
就是把属性里的属性名更改了格式,例子中就是把属性名'age'改成了属性名'_Woman__age'格式
即:属性名 改成 _类名__属性名
"""

要想输出私有属性,可以如下操作:

lili._Woman__age = 38
print(lili)
"""
输出结果:我的名字叫[丽丽],我今年38岁!
"""

使用get和set方法封装私有属性

get 获得一个属性 ,规范:对私有属性进行赋值,起方法的名字
set 设置一个属性 ,规范:对私有属性进行赋值,起方法的名字

通过提供一个公有的方法来访问私有属性(伪私有属性)或者方法,这样的话我们可以按照条件来进行访问权限的控制;

代码示例:

class QqRead:
    """
    定义QQ阅读类
    """
    def __reader(self):
        """
        封装一个私有属性
        """
        print("SVIP会员小说阅读中···")

    # def __init__(self,money):
    #     """
    #     升级:
    #     初始化账户余额
    #     """
    #     self.money = money

    def get_BuyVip(self,money):
        """
        提供一个公有的方法,对私有的方法进行访问
        get 获得 ,规范:对私有属性进行赋值
        set 设置 ,规范:对私有属性进行赋值
        """
        if money > 20:
            self.__reader()
        else:
            print("对不起,余额不足,请充值会员~!!")

# 实例化对象
qq = QqRead()
qq.get_BuyVip(10)

qq.get_BuyVip(30)

"""
输出结果:
对不起,余额不足,请充值会员~!!

SVIP会员小说阅读中···
"""
posted @   猪腩飞了天  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示