就是几个动物,自动排列生成什么的

  1. class Animal(object):
  2. def __init__(self,name,weight):
  3. self.name = name
  4. self.weight = weight
  5. def eat(self):
  6. self.weight +=1
  7. def speak(self):
  8. print ("i am a animal")
  9. def walk(self):
  10. print ("i am walking")
  11.  
  12. class Dog(Animal):
  13. def __init__(self,name,weight):
  14. Animal.__init__(self,name,weight)
  15. def eat():
  16. self.weight +=1
  17. def speak(self):
  18. print ("i am a dog")
  19. def walk(self):
  20. print ("i am walking")
  21. class Duck(Animal):
  22. def __init__(self,name,weight):
  23. Animal.__init__(self,name,weight)
  24. def eat(self):
  25. self.weight +=1
  26. def speak(self):
  27. print ("i am a duck")
  28. def walk(self):
  29. print ("i am walking")
  30. class Cat(Animal):
  31. def __init__(self,name,weight):
  32. Animal.__init__(self,name,weight)
  33. def eat(self):
  34. self.weight +=1
  35. def speak(self):
  36. print ("i am a dog")
  37. def walk():
  38. print ("i am walking")
  39.  
  40. #animal = Dog("Dog",24)
  41.  
  42. #animal.speak()
  43.  
  44. def reAnimals(zoo):
  45.  
  46. string = "animal"
  47. for x in range(0,21):
  48. if x%3 ==0:
  49. animal = Dog(string+str(x),x+2)
  50. if x%3 ==1:
  51. animal = Duck(string+str(x),x)
  52. if x%3 ==2:
  53. animal = Cat(string+str(x),x)
  54. zoo.append(animal)
  55. return zoo
  56.  
  57. #zoo = [item for item in animal if item.weight <= 10 and item.weight >= 0]
  58.  
  59. def filterAnimal(animal):
  60. zoo = []
  61. for x in range(0,len(animal)):
  62. if animal[x].weight<=10 and animal[x].weight>=0:
  63. zoo.append(animal[x])
  64. #animal.clear()
  65. #animal = zoo
  66. return zoo
  67.  
  68. animal = []
  69. dongwu = []
  70.  
  71. dongwu = filterAnimal(reAnimals(dongwu))
  72.  
  73. for x in dongwu:
  74. x.speak()
  75. print (x.weight)
  76.  
  77. #print (animal[x].weight)

改版代码:

  1. class Animal(object):
  2. def __init__(self,name,weight):
  3. self.name = name
  4. self.weight = weight
  5. def eat(self):
  6. self.weight +=1
  7. def fly(self):
  8. print ("i am a animal and i can fly")
  9. def jump(self):
  10. print ("i can jump ")
  11.  
  12. class Tiger(Animal):
  13. def __init__(self,name,weight):
  14. Animal.__init__(self,name,weight)
  15. def eat():
  16. self.weight +=1
  17. def fly(self):
  18. print ("i am a Tiger and i cant fly")
  19. def jump(self):
  20. print ("i can jump ")
  21. class Bird(Animal):
  22. def __init__(self,name,weight):
  23. Animal.__init__(self,name,weight)
  24. def eat(self):
  25. self.weight +=1
  26. def fly(self):
  27. print ("i am a bird and i can fly")
  28. def jump(self):
  29. print ("i can jump ")
  30. class Snake(Animal):
  31. def __init__(self,name,weight):
  32. Animal.__init__(self,name,weight)
  33. def eat(self):
  34. self.weight +=1
  35. def fly(self):
  36. print ("i am a snake and i cant fly")
  37. def jump(self):
  38. print ("i cant jump ")
  39.  
  40. container = []
  41. dongwu = []
  42.  
  43. class Zoo(object):
  44. def filterAnimal(animal):
  45. container = []
  46. for x in range(0,len(animal)):
  47. if animal[x].weight<=10 and animal[x].weight>=0:
  48. container.append(animal[x])
  49. return container
  50. def reAnimals(container):
  51. string = "animal"
  52. for x in range(0,21):
  53. if x%3 ==0:
  54. animal = Tiger(string+str(x),x+2)
  55. if x%3 ==1:
  56. animal = Bird(string+str(x),x)
  57. if x%3 ==2:
  58. animal = Snake(string+str(x),x)
  59. container.append(animal)
  60. return container
  61. def relax():
  62. dongwu = Zoo.filterAnimal(Zoo.reAnimals(container))
  63. for x in dongwu:
  64. x.fly()
  65. x.jump()
  66.  
  67. Zoo.relax()

python面向对象小练习的更多相关文章

  1. python面向对象小tips

    (一).python鸭子类型 python作为动态语言继承和多态与静态语言(像java)有很大的不同:比如说在java中的某个方法,如果传入的参数是Animal类型,那么传入的对象必须是Animal类 ...

  2. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  3. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  4. 12岁的少年教你用Python做小游戏

    首页 资讯 文章 频道 资源 小组 相亲 登录 注册       首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...

  5. Python开发【第七篇】:面向对象 和 python面向对象(初级篇)(上)

    Python 面向对象(初级篇)   51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...

  6. python 面向对象进阶之内置方法

    一 isinstance(obj,cls)和issubclass(sub,super) 1.1,isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(obj ...

  7. python面向对象编程进阶

    python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...

  8. Python学习笔记【第十一篇】:Python面向对象高级

    isinstance(obj,cls)和issubclass(sub,super) class Person(object): def __init__(self, name, age, sex, n ...

  9. python面向对象入门(1):从代码复用开始

    本文从代码复用的角度一步一步演示如何从python普通代码进化到面向对象,并通过代码去解释一些面向对象的理论.所以,本文前面的内容都是非面向对象的语法实现方式,只有在最结尾才给出了面向对象的简单语法介 ...

随机推荐

  1. 通讯协议序列化解读(一) Protobuf详解教程

    前言:说到JSON可能大家很熟悉,是目前应用最广泛的一种序列化格式,它使用起来简单方便,而且拥有超高的可读性.但是在越来越多的应用场景里,JSON冗长的缺点导致它并不是一种最优的选择. 一.常用序列化 ...

  2. Luxurious Houses

    The capital of Berland has n multifloor buildings. The architect who built up the capital was very c ...

  3. Docker常见仓库Ubuntu

    Ubuntu 基本信息 Ubuntu 是流行的 Linux 发行版,其自带软件版本往往较新一些. 该仓库提供了 Ubuntu从12.04 ~ 14.10 各个版本的镜像. 使用方法 默认会启动一个最小 ...

  4. IntelliJ IDEA下Git的配置与使用(命令行下)

    1. 安装Git并配置好Git 安装与配置参见Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)中的2.在本机安装Git与3.1 配置git. 2. 创建远程仓库 在gitee. ...

  5. ListView常见的优化方式简述

    ListView的优化 对于ListView来说,应该算是布局中几种最常用的组件之一了,使用也十分方便,下面个大家介绍一下两种常见的优化方式. 1.条目复用优化 其实listview的工作原理就是,l ...

  6. springMVC源码分析--ModelFactory

    ModelFactory是用来维护Model的,具体包含两个功能 (1)初始化Model (2)处理器执行后将Model中相应的参数更新到SessionAttributes中 1.初始化Model其实 ...

  7. linux下数据同步、回写机制分析

    一.前言在linux2.6.32之前,linux下数据同步是基于pdflush线程机制来实现的,在linux2.6.32以上的版本,内核彻底删掉了pdflush机制,改为了基于per-bdi线程来实现 ...

  8. 在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。

    //重叠区间数 #define N 2 typedef struct arrange { int x; int y; } Arrange; //先按左边界排序,若相等再按右边界排序(升序) int c ...

  9. 用scheme最基本的元素定义排序函数

    用到的元素有9个: define,if,null?,cons car,cdr,lambda,let,named let, 其实let 和 named let可以去掉.但那样会带来性能和可读性下降的问题 ...

  10. 不规则递归转换为while,留底

    我发现当参数并不太多时,从性能的角度来看,没必要用一个class来保存参数(虽然看起来更加生动形象),直接用最简单的元组就可以了. from hanoi import * # example tree ...