day31 类的组合及继承,文件目录规范
Python之路,Day18 = Python基础18-面向对象继承与组合
类的继承
def talk():
print("I am come from talk..a") class Animal:
def say(self):
print("say") class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age def walk(self):
print("%s is walking..."%self.name) class Teacher(Person):
def say(self):
Animal.say(123)
pass class Student(Person):
def __init__(self, name, age, tuition):
Person.__init__(self, name, age)
self.tuition = tuition def walk(self):
Person.walk(self)
print("I am come from Student...") def talk(self):
talk() # 对象可以调用外面的函数 t = Teacher('zhang', 18)
print(t.name, t.age)
t.walk()
t.say() s = Student('liu', 17, 19800)
print(s.name, s.age)
s.walk()
print(s.tuition) s.talk()
类的组合
class BirthDay(object):
def __init__(self, year, mon, day):
self.year = year
self.mon = mon
self.day = day def tellInfo(self):
print("comes from BirthDay")
return "year:%s mon:%s day:%s"%(self.year, self.mon, self.day) class Teacher(object):
def __init__(self, name, age, sex, birth):
self.name = name
self.age = age
self.sex =sex
self.birth = birth t = Teacher('zhang', 18, 'male', BirthDay(1999, 9, 99)) print(t.birth.tellInfo())
文件目录规范

飞机大战的例子
import time
import pygame
from sys import exit def main(): screen = pygame.display.set_mode((512, 768), 0, 32)
pygame.display.set_caption("飞机大战之类的练习")
pygame.mouse.set_visible(False)
background = pygame.image.load(r".\img\background.jpg")
hero_plan_len = 151
hero_plan_hig = 108 hero_plan = HeroPlan(screen, hero_plan_len, hero_plan_hig)
enemy_plan = EnemyPlan(screen) while True:
screen.blit(background, (0,0)) hero_plan.display()
get_input(hero_plan) enemy_plan.display() pygame.display.update() time.sleep(0.03) class BasePlan:
def __init__(self, screen, x, y):
self.screen = screen
self.x = x
self.y = y
self.buttle = []
self.count = 0 def display(self):
self.move()
self.screen.blit(self.plan, (self.x, self.y))
self.fire() for buttle in self.buttle:
if buttle.clearButtle():
self.buttle.remove(buttle) buttle.move()
buttle.display() def move(self):
pass class HeroPlan(BasePlan):
def __init__(self, screen, lenth, high):
super().__init__(screen, 180, 640)
self.lenth = lenth
self.high = high
self.plan = pygame.image.load(r".\img\hero_plan.png") def fire(self):
if self.count == 2:
self.buttle.append(HeroBullet(self.screen, self.x + 20, self.y - 48))
self.buttle.append(HeroBullet(self.screen, self.x + 105, self.y - 48))
self.count = 0
else:
self.count += 1 class EnemyPlan(BasePlan):
def __init__(self, screen):
super().__init__(screen, 0, 0)
self.direction = "right"
self.plan = pygame.image.load(r".\img\enemy_plan.png") def move(self):
if self.direction == "right":
self.x += 10
elif self.direction == 'left':
self.x -= 10 if self.x <= 0:
self.direction = "right"
elif self.x >= 248:
self.direction = "left" def fire(self):
if self.count == 20:
self.buttle.append(EnemyButtle(self.screen, self.x+40, self.y+160))
self.buttle.append(EnemyButtle(self.screen, self.x+175, self.y+160))
self.count = 0
else:
self.count += 1 class BaseBullet:
def __init__(self, screen, x, y):
self.screen = screen
self.x = x
self.y = y def display(self):
self.screen.blit(self.buttle, (self.x, self.y)) class HeroBullet(BaseBullet):
def __init__(self, screen, x, y):
super().__init__(screen, x, y)
self.buttle = pygame.image.load(r".\img\hero_bullet.png") def move(self):
self.y -= 20 def clearButtle(self):
if self.y < 0:
return True class EnemyButtle(BaseBullet):
def __init__(self, screen, x, y):
super().__init__(screen, x, y)
self.buttle = pygame.image.load(r".\img\enemy_bullet.png") def move(self):
self.y += 10 def clearButtle(self):
if self.y > 714:
return True def get_input(hero_plan):
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit() x, y = pygame.mouse.get_pos()
hero_plan.x = x - hero_plan.lenth/2
hero_plan.y = y - hero_plan.high/2 def key_control(hero_temp): #获取事件,比如按键等
for event in pygame.event.get(): #判断是否是点击了退出按钮
if event.type == QUIT:
print("exit")
exit()
#判断是否是按下了键
elif event.type == KEYDOWN:
#检测按键是否是a或者left
if event.key == K_a or event.key == K_LEFT:
print('left')
hero_temp.move_left()
#检测按键是否是d或者right
elif event.key == K_d or event.key == K_RIGHT:
print('right')
hero_temp.move_right()
#检测按键是否是空格键
elif event.key == K_SPACE:
print('space')
hero_temp.fire() if __name__ == "__main__":
main()
day31 类的组合及继承,文件目录规范的更多相关文章
- python's ninteenth day for me 类的组合,继承。
组合: 表示一个类的对象作为另一个类对象的属性. 实例化的过程: 1,创建一个对象. 2,__init__ 给对象添加一些属性,对象默认的名字为self. 3,将self所指向的内存空间返回给实例化他 ...
- python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于“有一个”的场景中,继承用于“是一个”的场景 ...
- Day 23 类的继承,派生,组合,菱形继承,多态与多态性
类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 为什么用继承 使用继承可以减少代码的冗余 对象的继承 python中 ...
- 28-React state提升、组件组合或继承
Lifting State Up state提升 对于在React应用程序中更改的任何数据,应该有一个单一的数据源.通常,都是将state添加到需要渲染的组件.如果其他组件也需要它,您可以将其提升到最 ...
- day25、 静态属性、类方法、静态方法、组合、继承、
一. 静态属性.类方法.静态方法 1.1静态属性 class Room: def __init__(self,name,owner,width,length): self.name=name self ...
- Java(Android)编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
1.组合和继承之间的选择 组合和继承都允许在新的类中放置子对象,组合是显式的这样做,而继承则是隐式的做. 组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形.即在新类中嵌入某个对象,让其实 ...
- oc随笔二:组合、继承
在oc中如果没有使用ARC的话,手动管理内存一定要注意处理好“野指针”,通常我们在释放指针的指向的地址时,都要将指针赋值为nil,这样能有效的防止野指针.常用的关键字:retain.assign .s ...
- 《Java程序员面试笔试宝典》之组合与继承有什么区别
组合和继承是面向对象中两种代码复用的方式.组合是指在新类里面创建原有类的对象,重复利用已有类的功能.继承是面向对象的主要特性之一,它允许设计人员根据其它类的实现来定义一个类的实现.组合和继承都允许在新 ...
- c++,类的组合
1. 在A类中以B类的对象作为成员变量,称为类的组合(composition). 可以先看看这篇文章理解组合的用处: C++中组合的使用 http://blog.csdn.net/jia_xiaoxi ...
随机推荐
- 从零开始学Jqueue
http://www.cnblogs.com/zhangziqiu/archive/2009/04/30/jQuery-Learn-1.html
- PHP中的闭包小谈
接触PHP一段时间以来,我一直以为这是一种基于函数式编程的语言是没有闭包这种东西的,但事实上却颠覆了我的想法,PHP竟然有闭包,下面我们一起来接触一下PHP的所谓的闭包. 根据PHP官网的定义来看,闭 ...
- 二.Python基础语法和数据类型
Python第二节 基础语法和数据类型 Python编码 python3默认情况下源码文件以UTF-8编码, 字符串均为unicode字符串.同时也可以通过# -*- coding: cp-1252 ...
- react-router踩坑
1.当用BrowserRouter时,<Link/>组件必须放在BrowserRouter里,如果是存在于某个组件里的Link,则该组件也必须放在Router里,不然会出现url改变页面为 ...
- linux6查看时间同步服务器的匹配源
当服务器时间与设定好的同步时间源的时间有差异的时候,一般都需要先查看本机的时间同步服务功能是否在正常的运转,以及同步的时间源是哪里,在这里为大家提供一个检查时间用的命令. linux/centos 6 ...
- vue 单元素过渡
demo <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- [转]WPF中的导航框架
有的时候,我们需要一个支持页面跳转的UI,例如文件浏览器,开始向导等.对于这样的界面,简单的可以使用ContentControl + ContentTemplateSelector的方式来实现,但是有 ...
- 【JZOJ6419】模拟旅行&【BZOJ5506】【luoguP5304】旅行者
description 某国有n座城市,这些城市之间通过m条单向道路相连,已知每条道路的长度. 不过,小X只对其中k座城市感兴趣. 为了更好地规划模拟旅行路线,提升模拟旅行的体验,小X想要知道他感兴趣 ...
- mui框架页面每次加载操作
最近在优化自己用mui开发的app,主要还是针对交互这块儿,这里简单给大家说一下问题点场景,就是我是通过动态添加底部tabBar的方法创建了一个底部可以切换的操作区域,代码如下: mui.init() ...
- CGLIB 详解
依赖 <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> ...