python面向对象案例--买水果

python面向对象案例–买水果

知识点讲解

面向对象基础

​ 我今天讲的用一句话概括就是对象是可以被当做参数传递的,这句话很精髓

​ 在你看到这篇文章时,你至少要了解,对象,类,方法,属性这些概念

买水果案例

# 案例 --买水果
# 水果超市,苹果:20,梨子:10,桃子:5,橘子:3
# 问题:买水果
# 1.抽象出对象:水果,你
# 2.各个对象实现自己的功能(抽象出对象的属性和方法)
#      水果:方法无,属性价格,名字
#         人:方法买水果,属性钱,名字
# 3.使用对象去解决问题 人去买水果

# 代码要符合pep8规范(ctrl+alt+l)
class Fruit:
    """水果类"""
    def __init__(self, name, price):
        """创建实例自动调用该方法,初始化方法,是一个魔法方法"""
        self.price = price
        self.name = name

    def __str__(self):
        """必须返回一个字符串"""
        return "{}的价是{}元".format(self.name, self.price)


class Man:
    """人"""
    def __init__(self, name, money):
        self.name = name
        self.money = money

    def __str__(self):
        return "{}有{}元".format(self.name, self.money)

    def buy(self, fruit, quanlity):  # fruit = apple
        """
        买水果
        1.你挑选水果:3斤苹果
        2.结账:物物交换,总的钱-水果的钱=剩下的钱
        fruit: 水果
        quanlity: 数量
        :return: None
        """
        total_money_fruit = fruit.price*quanlity

        if self.money < total_money_fruit:
            print("{}只有{}元,买不了{}元水果".format(self.name, self.money, total_money_fruit))

        else:
            self.money = self.money - total_money_fruit

            print("{}购买{}斤{}成功,还剩{}元".format(self.name, quanlity, fruit.name, self.money))


if __name__ == '__main__':
    apple = Fruit('苹果', 20)
    pear = Fruit('梨子', 10)
    peach = Fruit('桃子', 5)
    orange = Fruit('橘子', 3)

    print(apple)
    print(pear)
    print(peach)
    print(orange)
    print('==========================')

    you = Man('你', 50)
    me = Man('我', 5)
    print(you)
    print(me)
    print('===========================')

    you.buy(apple, 2)
    you.buy(orange, 1)

    me.buy(orange, 1)
    print("坐个公交车回家")

对象被当做参数传递,函数对象,实力对象,类对象,各种对象,传递前后对象的属性和方法没有发生变化

你可能感兴趣的:(python,Python)