小言_互联网的博客

论Python中面向对象【OOP】的学习

351人阅读  评论(0)

目录

面向对象

定义类的格式

如何将类转换为对象

实例


面向对象

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性【信息】和方法【要完成的事情】。对象是类的实例。类是抽象的,不能直接使用。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

定义类的格式

class(): pass

如何将类转换为对象

实例化 —— 实例化指在面向对象编程中,使用类创建对象的过程称为实例化,是将一个抽象的概念具体化的过程

实例化过程 —— 类名 对象名 = 类名(参数1,参数2, ...)

实例

示例1: 

小明今年18岁,身高1.75,每天早上要跑步,跑完去吃饭
小美今年16岁,身高1.65,小美不跑步,喜欢吃东西


  
  1. class People():
  2. # 初始化方法
  3. def __init__(self,name,age,height):
  4. # 将self和name封装在一起,=后name为所传入的值
  5. self.name = name
  6. self.age = age
  7. self.height = height
  8. # 字符串方法,用来返回字符串
  9. def __str__(self):
  10. return 'I am %s' % self.name
  11. def eat(self):
  12. print( '%s is eating' % self.name)
  13. def run(self):
  14. print( '%s is running' % self.name)
  15. p1 = People( 'dsd', 24, 183)
  16. print(p1.name,p1.age,p1.height)
  17. p1.run()
  18. p1.eat()
  19. print(p1)

示例2:

需求
1.小明和小美都爱跑步
2.小美体重45.0公斤
3.小明体重75.0公斤
4.每次跑步都会减少0.5公斤
5.每次吃东西都会增加1公斤 


  
  1. class People():
  2. def __init__(self,name,weight):
  3. self.name = name
  4. self.weight = weight
  5. def __str__(self):
  6. return '%s weight is %.2f' %(self.name,self.weight)
  7. def eat(self):
  8. self.weight += 1.0
  9. def run(self):
  10. self.weight -= 0. 5
  11. xiaoming = People( 'xiaoming', 75.0)
  12. xiaoming.eat()
  13. print(xiaoming)
  14. xiaoming.run()
  15. print(xiaoming)
  16. xiaomei = People( 'xiaoming', 45.0)
  17. xiaomei.run()
  18. print(xiaomei)
  19. xiaomei.eat()
  20. print(xiaomei)

示例3:

栈:如何用类方法定义一个栈 


  
  1. class Stack(object):
  2. def __init__(self):
  3. # 定义一个空列表,相当于一个空栈,用来存储和读取
  4. self.stack = []
  5. # 用来检测长度
  6. def __len__(self):
  7. return len( self.stack)
  8. def top(self):
  9. # 判断栈是否为空
  10. if not self.is_empty():
  11. return self.stack[- 1]
  12. # 抛出异常
  13. raise Exception( 'stack is empty!')
  14. def push(self,element):
  15. self.stack.append(element)
  16. def pop(self):
  17. # 判断栈是否为空
  18. if self.is_empty():
  19. raise Exception( 'stack is empty!')
  20. else:
  21. item = self.stack.pop()
  22. return item
  23. def length(self):
  24. return len( self.stack)
  25. def is_empty(self):
  26. return len( self.stack) == 0
  27. # 实例化
  28. stack = Stack()
  29. stack.push( 1)
  30. stack.push( 2)
  31. print(stack.length())
  32. item = stack.pop()
  33. print( 'The pop item is: %s' %item)
  34. print(stack.top())
  35. print(stack.is_empty())
  36. print(stack.pop())
  37. print(stack.length())
  38. print(stack.is_empty())

示例4:

1.房子有户型,总面积和家具名称列表
        新房子没有任何的家具

2.家具有名字和占地面积,其中
        床:占4平米
        衣柜:占2平米
        餐桌:占1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表


  
  1. class Furniture(object):
  2. def __init__(self,name,area):
  3. self.name = name
  4. self.area = area
  5. def __str__(self):
  6. return '[%s] 占地 (%.2f) 平米' %(self.name,self.area)
  7. # 房子
  8. class House(object):
  9. def __init__(self,unitType,area):
  10. # 户型
  11. self.unitType = unitType
  12. # 总面积
  13. self.area = area
  14. # 家具名称列表
  15. self.furniture_list = []
  16. # 剩余面积
  17. self.free_area = area
  18. def __str__(self):
  19. return ' 户型: %s\n 总面积: %.2f\n 剩余面积:%.2f\n 家具列表:%s\n' \
  20. %(self.unitType,self.area,self.free_area,self.furniture_list)
  21. def add_fur(self,item):
  22. self.furniture_list.append(item.name)
  23. self.free_area -= item.area
  24. bed = Furniture( 'bed', 4)
  25. yigui = Furniture( 'yigui', 2)
  26. table = Furniture( 'table', 1.5)
  27. home = House( 'dsd', 200)
  28. home.add_fur(bed)
  29. home.add_fur(yigui)
  30. print(home)

 


转载:https://blog.csdn.net/m0_37868230/article/details/105737231
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场