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 ...
随机推荐
- css3 一个六边形 和 放大旋转动画DEMO演示
<!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title> ...
- 22-8-filter
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux 档案目录的结构及功能(鸟哥私房菜)
- 笔记43 Spring Security简介
基于Spittr应用 一.Spring Security简介 Spring Security是为基于Spring的应用程序提供声明式安全保护的安全 性框架.Spring Security提供了完整的安 ...
- Deployment的使用
RC和RS的功能基本上是差不多的,唯一的区别就是RS支持集合的selector. RC|RS是Kubernetes的一个核心概念,当我们把应用部署到集群之后,需要保证应用能够持续稳定的运行,RC|RS ...
- -bash: docker-compose: command not found、linux 安装 docker-compose
方式1:https://blog.csdn.net/qq_32447321/article/details/76512137 方式2: curl -L https://get.daocloud.io/ ...
- 修改ie版本为Edge
<meta http-equiv="X-UA-Compatible" content="IE=Edge"> #以上代码告诉IE浏览器,IE8/9及以 ...
- C中空指针、NULL与0
空指针是指确保可以没有指向任何一个对象的指针.空指针常量值通常使用宏定义NULL来表示. 空指针和任何非空指针比较都不相等,因此经常作为函数异常时的返回值使用. 链表也经常在数据末尾放一个空指针提示后 ...
- 阿里云重磅推出物联网安全运营中心Link SOC
阿里云IoT自主研发了新一代物联网安全平台Link Security,面向IoT设备全生命周期构建了一整套全链路多层次的安全防御体系,IoT物联网平台的业务在不同层面可以按需集成安全能力. 1.首先在 ...
- 牛客多校第十场 F Popping Balloons 线段树维护稀疏矩阵
题意: 给定一个稀疏矩阵,里面有若干个气球,让你横着开三枪,竖着开三枪,问最多能打爆多少气球,要求相同方向,相邻两枪必须间隔r. 题解: 横向记录每列有多少个气球,分别在哪行上. 然后把这个数据改造成 ...