Python面向对象编程的思路记录

  初学python,在编程中,应该如何一步一步着手,遵循一个合理的逻辑思维过程,培养良好的编程习惯,特此记录方便以后查阅。

  小人开枪为例

  1.定义主函数,控制整个程序流程:

  def main():

  """用于控制程序流程

  pass

  if __name__ == '__main__':

  main()

  2.搭建框架。在主函数中用中文注释每一个步骤

  def main():

  # 1.创建一个小人对象

  # 2.创建一把枪对象

  # 3.创建一个bb弹对象

  # 4.创建bb弹对象

  # 5.小人把bb弹装入bb弹中

  # 6.小人把bb弹装入枪中

  # 7.创建一个敌人对象

  # 8. 小人拿起枪

  # 9.小人开枪射杀敌人

  if __name__ == '__main__':

  main()

  3.顺着搭建的框架,依次设计类、创建对象

  4.每写一个类的方法,都要注释""“写出该方法的功能是干什么的”""(类似于大框架),以及用#写出怎么分步实现的,怎么实现的,再去写实现的过程。

  """实例"""

  class A:

  def test(self):

  """进行测试"""

  #1. 取出数据

  XXXXXXXX

  #2. 带入公式

  XXXXXXXX

  5.完成一个步骤之后,要习惯性的进行test

  # 测试bb弹的信息

  print(dan_jia)

  # 测试枪的信息

  print(某枪型号)

  bb弹数量为:1/20

  枪装有bb弹

  此人有枪

  完整代码

  class Person():

  """人的类"""

  def __init__(self, name):

  self.name = name

  self.hp = 100 #100血

  def add_bullet(self,danjia_temp, bullet_temp):

  # 给bb弹添加bb弹

  danjia_temp.tianjia_bullet(bullet_temp)

  def add_danjia(self,gun_temp, dan_jia_temp):

  # 给枪添加bb弹

  gun_temp.add_danjia(dan_jia_temp)

  def own_gun(self, gun_temp):

  """拿枪"""

  self.gun = gun_temp

  def __str__(self):

  return "此人有%s枪"%(self.gun.name)

  def shot(self, target):

  """击杀敌人"""

  self.gun.fire(target)

  def diaoxue(self,shanghai_temp):

  """被打中掉血了"""

  self.hp-=shanghai_temp

  print("打中敌人了,敌人的血还剩下: %d"%self.hp)

  class Gun():

  """枪的类"""

  def __init__(self, name):

  self.name = name

  self.danjia = None

  def add_danjia(self,dan_jia_temp):

  #枪装入bb弹

  self.danjia = dan_jia_temp

  def __str__(self):

  if self.danjia == None:

  return "%s枪没有bb弹"%(self.name)

  else:

  return "%s枪装有bb弹"%(self.name)

  def fire(self, target):

  """从bb弹中取出bb弹,然后让该bb弹打中敌人"""

  #bb弹取出bb弹

  zidan_temp = self.danjia.tanchu_bullet()

  #用bb弹去打敌人

  if zidan_temp:

  zidan_temp.hurt(target)

  class DanJia():

  """bb弹的类"""

  def __init__(self, max_number):

  self.max_number = max_number #bb弹的容量

  self.bullet_list = [] #bb弹当前的bb弹数量

  def tianjia_bullet(self,bullet_temp):

  "bb弹添加bb弹"

  self.bullet_list.append(bullet_temp)

  def __str__(self):郑州妇科医院 http://www.sptdfk.com/

  return "bb弹的bb弹数量为:%d/%d"%(len(self.bullet_list), self.max_number)

  def tanchu_bullet(self):

  #bb弹.弹出bb弹

  if self.bullet_list:

  return self.bullet_list.pop()

  else:

  print("很遗憾,没有bb弹...")

  return None

  class Bullet():

  def __init__(self):

  self.shanghai = 10

  def hurt(self, target):

  target.diaoxue(self.shanghai)

  def main():

  # 1.创建一个小人对象

  xiaoren = Person("xiaoren")

  # 2.创建一把枪对象

  某枪型号 =Gun("型号")

  # 3.创建一个bb弹对象

  dan_jia = DanJia(20) #属性:bb弹能装20颗bb弹

  # 4.创建bb弹对象

  bullet = Bullet()

  # 5.小人人把bb弹装入bb弹中

  xiaoren.add_bullet(dan_jia, bullet)

  # 6.小人把bb弹装入枪中

  xiaoren.add_danjia(某枪型号, dan_jia)

  # 7.创建一个敌人对象

  enermy = Person("enermy")

  # 测试bb弹的信息

  # print(dan_jia)

  # 测试枪的信息

  # print(某枪型号)

  # 8. 小人拿起枪

  xiaoren.own_gun(某枪型号)

  #测试人

  # print(xiaoren)

  # 9.小人开枪射杀敌人

  xiaoren.shot(enermy)

  if __name__ == '__main__':

  main()


猜你喜欢

转载自blog.51cto.com/14503791/2476977