我今天讲的用一句话概括就是对象是可以被当做参数传递的,这句话很精髓
在你看到这篇文章时,你至少要了解,对象,类,方法,属性这些概念
# 案例 --买水果
# 水果超市,苹果: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("坐个公交车回家")
对象被当做参数传递,函数对象,实力对象,类对象,各种对象,传递前后对象的属性和方法没有发生变化