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

class Animal(object):
def __init__(self,name,weight):
self.name = name
self.weight = weight
def eat(self):
self.weight +=1
def speak(self):
print ("i am a animal")
def walk(self):
print ("i am walking") class Dog(Animal):
def __init__(self,name,weight):
Animal.__init__(self,name,weight)
def eat():
self.weight +=1
def speak(self):
print ("i am a dog")
def walk(self):
print ("i am walking")
class Duck(Animal):
def __init__(self,name,weight):
Animal.__init__(self,name,weight)
def eat(self):
self.weight +=1
def speak(self):
print ("i am a duck")
def walk(self):
print ("i am walking")
class Cat(Animal):
def __init__(self,name,weight):
Animal.__init__(self,name,weight)
def eat(self):
self.weight +=1
def speak(self):
print ("i am a dog")
def walk():
print ("i am walking") #animal = Dog("Dog",24) #animal.speak() def reAnimals(zoo): string = "animal"
for x in range(0,21):
if x%3 ==0:
animal = Dog(string+str(x),x+2)
if x%3 ==1:
animal = Duck(string+str(x),x)
if x%3 ==2:
animal = Cat(string+str(x),x)
zoo.append(animal)
return zoo #zoo = [item for item in animal if item.weight <= 10 and item.weight >= 0] def filterAnimal(animal):
zoo = []
for x in range(0,len(animal)):
if animal[x].weight<=10 and animal[x].weight>=0:
zoo.append(animal[x])
#animal.clear()
#animal = zoo
return zoo animal = []
dongwu = [] dongwu = filterAnimal(reAnimals(dongwu)) for x in dongwu:
x.speak()
print (x.weight) #print (animal[x].weight)

改版代码:

class Animal(object):
def __init__(self,name,weight):
self.name = name
self.weight = weight
def eat(self):
self.weight +=1
def fly(self):
print ("i am a animal and i can fly")
def jump(self):
print ("i can jump ") class Tiger(Animal):
def __init__(self,name,weight):
Animal.__init__(self,name,weight)
def eat():
self.weight +=1
def fly(self):
print ("i am a Tiger and i cant fly")
def jump(self):
print ("i can jump ")
class Bird(Animal):
def __init__(self,name,weight):
Animal.__init__(self,name,weight)
def eat(self):
self.weight +=1
def fly(self):
print ("i am a bird and i can fly")
def jump(self):
print ("i can jump ")
class Snake(Animal):
def __init__(self,name,weight):
Animal.__init__(self,name,weight)
def eat(self):
self.weight +=1
def fly(self):
print ("i am a snake and i cant fly")
def jump(self):
print ("i cant jump ") container = []
dongwu = [] class Zoo(object):
def filterAnimal(animal):
container = []
for x in range(0,len(animal)):
if animal[x].weight<=10 and animal[x].weight>=0:
container.append(animal[x])
return container
def reAnimals(container):
string = "animal"
for x in range(0,21):
if x%3 ==0:
animal = Tiger(string+str(x),x+2)
if x%3 ==1:
animal = Bird(string+str(x),x)
if x%3 ==2:
animal = Snake(string+str(x),x)
container.append(animal)
return container
def relax():
dongwu = Zoo.filterAnimal(Zoo.reAnimals(container))
for x in dongwu:
x.fly()
x.jump() 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. ucsc 文件格式说明

    链接附带的是ucsc各种格式文件的说明,以后遇到新类型的文件可以先来这里看看! https://www.genome.ucsc.edu/FAQ/FAQformat.html

  2. JMETER_从入门到放弃系列

    基础篇 Jmeter(一)_环境部署 Jmeter(二)_基础元件 Jmeter(三)_配置元件 Jmeter(四)_16个逻辑控制器 Jmeter(五)_24个函数 Jmeter(六)_前置处理器 ...

  3. C/C++ 函数指针

    函数声明 例如: float func(int, int); 以上就是一个函数的声明,要注意它的实际功能并没有被实现,换句话说就是它并没有被定义,只是声明此函数的存在.要想调用次函数,你必须对对此函数 ...

  4. hiredis的各种windows版本

    hiredis的各种windows版本(金庆的专栏 2016.12)hiredis 是内存数据库 redis 的客户端C库, 不支持Windows.hiredis的Windows移植版本有许多:des ...

  5. 360浏览器不能打开CSDN登陆页面

    碰见个奇葩问题: 使用360浏览器(广大程序员不要鄙视我~ 我有我的理由)不能打开csdn的登陆页面~~你登陆的时候,他就一直在那里打转~~ 但是用ie就可以打开登陆页面.... 怎么回事???难道C ...

  6. Ubuntu使用dpkg安装软件依赖问题解决 ubuntu-tweak ubuntu 16.04 LTS 系统清理

    Ubuntu使用dpkg安装软件依赖问题解决 这里以在ubuntu 16.04安装Ubuntu Tweak为例进行说明,通常安装包依赖问题都可以用这种方法解决: sudo apt-get instal ...

  7. Appium移动自动化测试(三)--安装Android模拟器(建议直接连手机,跳过此步)

    转自虫师,亲测有效,留备后用. 本文中如果直接安装时不出现错误,则可以忽略(一.二.三.四.五),我安装的是5.1.1,直接成功,就是有点慢,要有耐心. 如果到最后一步,启动不起来,报错: emula ...

  8. 理解性能的奥秘——应用程序中慢,SSMS中快(5)——案例:如何应对参数嗅探

    本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(4)--收集解决参数嗅探问题的信息 首先我们需要明白,参数嗅探本身不是问 ...

  9. SSH 之 Spring的源码(一)——Bean加载过程

    看看Spring的源码,看看巨人的底层实现,拓展思路,为了更好的理解原理,看看源码,深入浅出吧.本文基于Spring 4.0.8版本. 首先Web项目使用Spring是通过在web.xml里面配置 o ...

  10. android galley实现画廊效果

    青春流水指间. 每段路,都有即将要来的旅程 每颗心,都有值得期待的成分 Android之ImageSwitcher,Gallery用法 今天在做一个软件界面时用到了ImageSwitcher和Gall ...