python学习笔记-Day6(3)
代码书写原则:
1)不能重复写代码
2)写的代码要经常变更
编程模式概述
- 面向过程:根据业务逻辑从上到下写垒代码
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
面向对象编程
面向对象的三大特性:封装、继承和多态
一、封装
class Role(object):
def __init__(self,name,role,weapon,life_value): #初始化
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
def buy_weapon(self,weapon):
print("%s is buying [%s]" %(self.name,weapon))
self.weapon = weapon
#role 的实例
#把一个抽象的类变成一个具体对象的过程叫实例化
p1 = Role('Alan','Police','B10',)
t1 = Role('Petter','Terrorist','B11',)
p1.buy_weapon("AK47") #Role.bur_weapon(p1,"AK47")
t1.buy_weapon("B51")
print("P1:",p1.weapon)
print("T1:",t1.weapon)
二、继承
class SchoolMember(object):
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def enroll(self):
print("SchoolMember%s is enrolled!" %self.name) def tell(self):
print("My name is %s" % self.name) class Teacher(SchoolMember):
def __init__(self,name,age,sex,course,salary):
super(Teacher,self).__init__(name,age,sex)
SchoolMember.__init__(self,name,age,sex)
self.course = course
self.salary = salary def teaching(self):
print("Teacher [%s] is teaching [%s]" %(self.name,self.course)) class Student(SchoolMember):
def __init__(self,name,age,sex,course,tuition):
super(Student,self).__init__(name,age,sex)
self.course = course
self.tuition = tuition def pay_tuition(self):
print("Student [%s] paying tuition [%s]" %(self.name,self.tuition)) t1 = Teacher("John", 30, "Male", "C", 10000)
t2 = Teacher("Jonna", 25, "Female", "UI",15000)
s1 = Student("Jeff", 27, "Male", "PY", 10000)
s2 = Student("Alice", 28, "Male", "Java", 12000)
三、多态
python本身不支持多态,以下是python模拟的多态:
class Animal:
def __init__(self, name): # Constructor of the class
self.name = name
def talk(self): # Abstract method, defined by convention only
raise NotImplementedError("Subclass must implement abstract method") class Cat(Animal):
def talk(self):
return 'Meow!' class Dog(Animal):
def talk(self):
return 'Woof! Woof!' def animal_talk(obj):
print(obj.talk()) c = Cat("Cat")
d = Dog("Dog")
animal_talk(c)
animal_talk(d) '''
animals = [Cat('Missy'),
Dog('Lassie')] for animal in animals:
print (animal.name + ': ' + animal.talk())
'''
python学习笔记-Day6(3)的更多相关文章
- python学习笔记-Day6(2)
xml处理模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融 ...
- python学习笔记-Day6(1)
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 >>> s=shelve.open('test') > ...
- Python学习笔记 - day6 - 函数
函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...
- 【目录】Python学习笔记
目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...
- Python学习记录day6
title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
随机推荐
- 读文档readarx.chm
readarx.chm <Tips and Techniques> Incremented AutoCAD Registry Number Ideally, a change of reg ...
- linux下mysql远程访问
// */ // ]]> linux下mysql远程访问 Mysql默认root用户只能本地访问,不能远程连接管理mysql数据库,但项目中必须要远程导 入导出数据,所以研究了一下. Tab ...
- ios webview中关于宽高的总结
测试一 测试的物料: <html> <head> <meta charset="UTF-8"> <meta name="view ...
- 关于oracle修复控制文件与数据文件不一致的问题----
本小菜鸟周末鼓捣数据库关于rman恢复与备份方面的实验,结果不知道哪根筋搭错了,手一哆嗦,做了不知道什么操作,就出现了数据库打不开的严重状态,只能开启到mount状态,但是切换到open状态时就会报错 ...
- stdio.h----标准的输入输出函数
C++兼容了stdio.h函数,其用法和c一样. 命令形式 #include <stdio.h>; 1.
- 慕客网laravel学习笔记
session中set方法使用 Session::set('user.username.age','18')嵌套使用得出$user = ['username'=>['age'=>18]]; ...
- 关于SoCFPGA 编译问答
1.在Qsys里面添加了一个新的组件(不是hps里面的东西),挂在Avalon总线上,如添加了一个新ADC组件,是否需要重新编译dtb. 答: 不需要. 2.修改了相关Qsys里面的东西,是否也需要 ...
- [vB.NET]为控件添加鼠标悬浮时的提示气泡
实例代码: Dim k As ToolTip k = New ToolTip() k.AutoPopDelay = '显示出气泡后的延时时间(毫秒) k.InitialDelay = '出现前的延时( ...
- Karma 4 - Karma 集成 Webpack 进行单元测试
可以将 karma 与 webpack 结合起来,自动化整个单元测试过程. 配置环境 1. 首先根据 1 完成基本的 karma 测试环境. 2. 安装 webpack 和 webpack 使用的 l ...
- sql(转自http://www.imooc.com/article/2325)
http://www.imooc.com/article/2325