day23 python学习 类 人狗大战
面向过程 VS 面向对象
面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。
面向过程
优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。
缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。
面向过程
优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。
了解一些名词:类、对象、实例、实例化
类:具有相同特征的一类事物(人、狗、老虎)
对象/实例:对象就是具体的拥有准确属性值的一些变量具体的某一个事物(隔壁阿花、楼下旺财)
实例化:类——>对象的过程(这在生活中表现的不明显,我们在后面再慢慢解释)实例化:从一个类中创造一个具体的对象的过程
初识面向对象
类的最基本形式 class Person: #类名有两个作用
country = '中国' #静态属性、数据属性 def walk(self): #动态属性、函数属性、方法
print('walk')
1.属性引用
在静态属性中的操作
print(Person.country) #静态属性的查看
print(Person.walk)
Person.role = '人' #添加一个新静态属性
Person.country = '印度' #修改一个新静态属性静态属性
注意:在静态属性中的内容不能用下边这两种方法来处理,会报错
#Person.__dict__['country']='印度'
#Person.__dict__['love']='beautiflgirl' del Person.role #删除一个静态属性
print(Person.__dict__)
print(Person.walk()) #报错 少self参数
Person.__dict__['country'] = '印度' #报错 不能改变
print(Person.__dict__['country'])
print(Person.country)
实例化
p = Person()
print(p) #Person的对象 class Person: #类名有两个作用
country = '中国' #静态属性、数据属性
def __init__(self,life_value,aggr,name,job): #初始化方法
#self = {'lv':life_value}
self.lv = life_value #属性,对象属性
self.aggr = aggr
self.name = name
self.job = job
def walk(self): #动态属性、函数属性、方法
print('%s is walking'%self.name) # # p = Person() #如何让对象拥有具体的属性
# p = Person(1000,2,'金老板','boss') #如何让对象拥有具体的属性
print(p.__dict__) 这种方法可以查看所有的属性,以键值对的形式存在
# p.walk() # Person.walk(p) #调用里边的walk函数
# print(p.lv) #Person的对象的属性查看
# print(p.aggr) #Person的对象
# p.sex = 'lady_boy' #添加一个属性 直接加
# print(p.sex)
# p.sex = 'girl' #属性的修改,直接修改
# print(p.sex)
# del p.sex #属性删除 用p.__dict__方法做的增删改查操作
# print(p.__dict__)
# print(p.__dict__['lv']) #查看
# p.__dict__['lv'] = 998 #对象名.__dict__中的属性值可以被修改
# print(p.__dict__['lv'],p.lv)
# p.__dict__['sex'] = 'lady_boy' #对象名.__dict__中的属性值可以增加
# print(p.__dict__,p.sex)
# p.__dict__.pop('sex') #对象名.__dict__中的属性值可以被删除
# print(p.__dict__)
#实例化 ——类名(参数)
#构造方法:造对象
#初始化__init__:给这个赤裸裸的对象添加一些属性 __init__
#返回了一个初始化之后的对象
#__init__方法:初始化方法,可以没有。给对象添加一些必要的基础属性
#self的含义:就是这个对象本身
#对象和属性的操作:对象名.属性名 对象名.__dict__['属性名']
day23 python学习 类 人狗大战的更多相关文章
- day24 python学习 类 画元,命名空间作用域,组合,人狗大战升级
类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...
- python开发面向对象基础:人狗大战学面向对象
一,通过函数写人狗大战这个故事 #!/usr/bin/env python #_*_coding:utf-8_*_ #1.函数 人模子 def person(name,level,life_value ...
- day23 02 组合(继续人狗大战游戏)
day23 02 组合(继续人狗大战游戏) 面向对象的三大特性:继承 多态 封装 先讲解一下组合 组合:一个对象的属性值是另一个类的对象:对象.属性.属性(一般有两个点) 继续扩展day22 01里面 ...
- day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
- python学习快人一步,从19个语法开始!
Python简单易学,但又博大精深.许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉.学海无涯,我们先来了解一些Python中最基本的内容. Python的特点 ...
- python学习|类和实例
什么叫实例对象呢?大家可以想象一下,[类]就像工厂的模具,以它为模板,造出来的成千上万的产品,才是被我们消费.购买.使用,真正融入我们生活的东西.这些产品,在Python中就叫[实例对象]. 往深了说 ...
- Python学习-类
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化 在python中,一个对象的特征也称为属性(attribute),它所具有的的行为也称为方法(method) 对象 = 属性(特征)+方法(行 ...
- [python 学习] 类
#!/usr/bin/python # -*- encoding:utf-8 -*- class Animal: animal_num = 0 class Dog(Animal): #类帮助文档 't ...
- python学习-类属性和实例属性
#类属性和实例属性 class Tool(object): #类属性 total = 0 #静态方法 @classmethod def say(self): print("hello wor ...
随机推荐
- English trip V1 - 3.What Would you Like? Teacher:Lamb Key: would like to
In this lesson you will learn to talk about fast food and health. would = will 的过去式 STARTER 1.Tell y ...
- LeetCode--190--颠倒二进制位
问题描述: 颠倒给定的 32 位无符号整数的二进制位. 示例: 输入: 43261596 输出: 964176192 解释: 43261596 的二进制表示形式为 000000101001010000 ...
- 52 53django
一.需要弄清楚的几个关键点: KEY: 1 Django项目无论多大,只是一个应用程序 2 地址栏发请求默认是GET请求 form表单可以发送get请求,也可以发送post请求 3 浏览器接受的响应体 ...
- 65. Valid Number *HARD*
Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...
- 使用GAN 进行异常检测——anoGAN,TODO,待用于安全分析实验
先说实验成功的代码: git clone https://github.com/tkwoo/anogan-keras.git mkdir weights python main.py --mode t ...
- 小程序公用js提取到app.js中调用的实例
index.wxml: <view "> <text>{{page}}</text> </view> <view "> ...
- asp.net MVC html.ActionLink的几种参数格式
一 Html.ActionLink("linkText","actionName") 该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法, ...
- POJ 1504 Adding Reversed Numbers
/*Sample Input 3 24 1 4358 754 305 Sample Output 34 1998 */ 值得总结的几点就是: 1.atoi函数将字符串转化为整型数字(类似于强制转换) ...
- POJ 1007 DNA sorting (关于字符串和排序的水题)
#include<iostream>//写字符串的题目可以用这种方式:str[i][j] &str[i] using namespace std; int main() {int ...
- anu - reactIE
import { options } from "./util"; import { Children } from "./Children"; import ...