day31 类的组合及继承,文件目录规范

Python之路,Day18 = Python基础18-面向对象继承与组合

类的继承

 1 def talk():
 2     print("I am come from talk..a")
 3
 4 class Animal:
 5     def say(self):
 6         print("say")
 7
 8 class Person(object):
 9     def __init__(self, name, age):
10         self.name = name
11         self.age = age
12
13     def walk(self):
14         print("%s is walking..."%self.name)
15
16 class Teacher(Person):
17     def say(self):
18         Animal.say(123)
19     pass
20
21 class Student(Person):
22     def __init__(self, name, age, tuition):
23         Person.__init__(self, name, age)
24         self.tuition = tuition
25
26     def walk(self):
27         Person.walk(self)
28         print("I am come from Student...")
29
30     def talk(self):
31         talk()                     # 对象可以调用外面的函数
32
33 t = Teacher(‘zhang‘, 18)
34 print(t.name, t.age)
35 t.walk()
36 t.say()
37
38
39 s = Student(‘liu‘, 17, 19800)
40 print(s.name, s.age)
41 s.walk()
42 print(s.tuition)
43
44
45 s.talk()

类的组合

 1 class BirthDay(object):
 2     def __init__(self, year, mon, day):
 3         self.year = year
 4         self.mon = mon
 5         self.day = day
 6
 7     def tellInfo(self):
 8         print("comes from BirthDay")
 9         return "year:%s  mon:%s  day:%s"%(self.year, self.mon, self.day)
10
11
12 class Teacher(object):
13     def __init__(self, name, age, sex, birth):
14         self.name = name
15         self.age = age
16         self.sex =sex
17         self.birth = birth
18
19
20
21 t = Teacher(‘zhang‘, 18, ‘male‘, BirthDay(1999, 9, 99))
22
23 print(t.birth.tellInfo())

文件目录规范

飞机大战的例子

  1 import time
  2 import pygame
  3 from sys import exit
  4
  5 def main():
  6
  7     screen = pygame.display.set_mode((512, 768), 0, 32)
  8     pygame.display.set_caption("飞机大战之类的练习")
  9     pygame.mouse.set_visible(False)
 10     background = pygame.image.load(r".\img\background.jpg")
 11     hero_plan_len = 151
 12     hero_plan_hig = 108
 13
 14     hero_plan = HeroPlan(screen, hero_plan_len, hero_plan_hig)
 15     enemy_plan = EnemyPlan(screen)
 16
 17
 18     while True:
 19         screen.blit(background, (0,0))
 20
 21         hero_plan.display()
 22         get_input(hero_plan)
 23
 24         enemy_plan.display()
 25
 26         pygame.display.update()
 27
 28         time.sleep(0.03)
 29
 30 class BasePlan:
 31     def __init__(self, screen, x, y):
 32         self.screen = screen
 33         self.x = x
 34         self.y = y
 35         self.buttle = []
 36         self.count = 0
 37
 38     def display(self):
 39         self.move()
 40         self.screen.blit(self.plan, (self.x, self.y))
 41         self.fire()
 42
 43         for buttle in self.buttle:
 44             if buttle.clearButtle():
 45                 self.buttle.remove(buttle)
 46
 47             buttle.move()
 48             buttle.display()
 49
 50
 51     def move(self):
 52         pass
 53
 54
 55 class HeroPlan(BasePlan):
 56     def __init__(self, screen, lenth, high):
 57         super().__init__(screen, 180, 640)
 58         self.lenth = lenth
 59         self.high = high
 60         self.plan = pygame.image.load(r".\img\hero_plan.png")
 61
 62
 63     def fire(self):
 64         if self.count == 2:
 65             self.buttle.append(HeroBullet(self.screen, self.x + 20, self.y - 48))
 66             self.buttle.append(HeroBullet(self.screen, self.x + 105, self.y - 48))
 67             self.count = 0
 68         else:
 69             self.count += 1
 70
 71
 72 class EnemyPlan(BasePlan):
 73     def __init__(self, screen):
 74         super().__init__(screen, 0, 0)
 75         self.direction = "right"
 76         self.plan = pygame.image.load(r".\img\enemy_plan.png")
 77
 78     def move(self):
 79         if self.direction == "right":
 80             self.x += 10
 81         elif self.direction == ‘left‘:
 82             self.x -= 10
 83
 84         if self.x <= 0:
 85             self.direction = "right"
 86         elif self.x >= 248:
 87             self.direction = "left"
 88
 89     def fire(self):
 90         if self.count == 20:
 91             self.buttle.append(EnemyButtle(self.screen, self.x+40, self.y+160))
 92             self.buttle.append(EnemyButtle(self.screen, self.x+175, self.y+160))
 93             self.count = 0
 94         else:
 95             self.count += 1
 96
 97
 98 class BaseBullet:
 99     def __init__(self, screen, x, y):
100         self.screen = screen
101         self.x = x
102         self.y = y
103
104     def display(self):
105         self.screen.blit(self.buttle, (self.x, self.y))
106
107 class HeroBullet(BaseBullet):
108     def __init__(self, screen, x, y):
109         super().__init__(screen, x, y)
110         self.buttle = pygame.image.load(r".\img\hero_bullet.png")
111
112     def move(self):
113         self.y -= 20
114
115     def clearButtle(self):
116         if self.y < 0:
117             return True
118
119
120 class EnemyButtle(BaseBullet):
121     def __init__(self, screen, x, y):
122         super().__init__(screen, x, y)
123         self.buttle = pygame.image.load(r".\img\enemy_bullet.png")
124
125     def move(self):
126         self.y += 10
127
128     def clearButtle(self):
129         if self.y > 714:
130             return True
131
132 def get_input(hero_plan):
133     for event in pygame.event.get():
134         if event.type == pygame.QUIT:
135             exit()
136
137     x, y = pygame.mouse.get_pos()
138     hero_plan.x = x - hero_plan.lenth/2
139     hero_plan.y = y - hero_plan.high/2
140
141 def key_control(hero_temp):
142
143     #获取事件,比如按键等
144     for event in pygame.event.get():
145
146         #判断是否是点击了退出按钮
147         if event.type == QUIT:
148             print("exit")
149             exit()
150         #判断是否是按下了键
151         elif event.type == KEYDOWN:
152             #检测按键是否是a或者left
153             if event.key == K_a or event.key == K_LEFT:
154                 print(‘left‘)
155                 hero_temp.move_left()
156             #检测按键是否是d或者right
157             elif event.key == K_d or event.key == K_RIGHT:
158                 print(‘right‘)
159                 hero_temp.move_right()
160             #检测按键是否是空格键
161             elif event.key == K_SPACE:
162                 print(‘space‘)
163                 hero_temp.fire()
164
165
166 if __name__ == "__main__":
167     main()
时间: 2024-10-15 15:40:48

day31 类的组合及继承,文件目录规范的相关文章

Python学习之旅—面向对象进阶知识:类的命名空间,类的组合与继承

前言 上篇博客笔者带领大家初步梳理了Python面向对象的基础知识,本篇博客将专注于解决三个知识点:类的命名空间,类的组合以及面向对象的三大特性之一继承,一起跟随笔者老看看今天的内容吧. 1.类的命名空间 在上一篇博客中,我们提到过对象可以动态添加属性,一起来回忆下昨天的知识点,看如下的代码: class A: pass a = A() a.name = 'alex' print(a.name) 这里我们手动为a对象添加了一个属性name,然后直接打印可以得到a对象的名称.通过这个例子,我们可以

类的组合 多继承调用示例

类的组合 1 class Foo1(object): 2 def __init__(self, name): 3 self.name1 = name 4 def get_name(self): 5 print("my name is %s"%self.name1) 6 7 class Foo2(object): 8 def __init__(self, name): 9 self.name2 = name 10 11 class Foo3(object): 12 def __init_

UM类图关系(继承,实现,依赖,关联,聚合,组合)

1.继承(is-a) 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性: 2.实现 指的是一个class类实现interface接口(可以是多个)的功能:实现是类与接口之间最常见的关系:在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性: 3.依赖(uses-a) 可以简单的理解,就是一

python类与对象的组合与继承

1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承用于"是一个"的场景中.例如,水池里有一个乌龟,天上有一个鸟,地上有一个小甲鱼,这些适合使用组合.青瓜是瓜,女人是人,鲨鱼是鱼,这些就应该使用继承啦实例如下: class Turtle: def __init__(self,x): self.num = x class Fish: def

类的继承、类的派生、类的组合

类的继承 子类继承父类的所有内容,可以继承多个 class ParentClass1: pass class ParentClass2: pass class SubClass(ParentClass1, ParentClass2): pass 类的派生 派生:在继承的基础上,子类会添加属于自己的属性 class ParentClass1: def __init__(self, name, age): self.name = name self.age = age class ParentCla

python自动化_day6_面向对象_组合,继承,多态

复习:http://www.cnblogs.com/Eva-J/articles/7228075.html 模块 1 import collections,os,sys,re,random,time 2 collections.defaultdict() #默认字典 默认字典的优势就是该字典中如果没有元素就直接添加 3 collections.OrderedDict() #有序字典 字典是有序的可以直接用索引调用 4 collections.namedtuple() #可命名元祖 可以把两个元组

day26--静态属性、类方法、静态方法、组合、继承

一.静态属性 class Room: tag=1 def __init__(self,name,owner,width,length,heigh): self.name=name self.owner=owner self.width=width self.length=length self.heigh=heigh @property def cal_area(self): # print('%s 住的 %s 总面积是%s' % (self.owner,self.name, self.widt

【C++基础】类的组合

所谓类的组合是指:类中的成员数据是还有一个类的对象或者是还有一个类的指针或引用.通过类的组合能够在已有的抽象的基础上实现更复杂的抽象. 比如: 1.按值组合 #include<iostream.h> #include<math.h> class Point { public: Point(int xx,int yy)//构造函数 { x=xx; y=yy; cout<<"Point's constructor was called"<<e

Day18:类的抽象、类的组合应用

一.抽象类 1.什么是抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化. 2.为什么要有抽象类 如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性. 比如我们有香蕉的类,有苹果的类,有桃子的类,从这些类抽取相同的内容就是水果这个抽象的类,你吃水果时,要么是吃一个具体的香蕉,要么是吃一个具体的桃子......你永远无法吃到一个叫做水果的东西. 从设计角度去看,如果类是从现实对象抽象而来的,那么抽象类就是基于类抽