博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day22_面向对象
阅读量:4637 次
发布时间:2019-06-09

本文共 2107 字,大约阅读时间需要 7 分钟。

面向过程:

优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。

缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

面向对象:

优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。

缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。

# 定义类

# init方法------实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征
# self是什么 self拥有属性都属于对象
# 类中可以定义静态属性
# 类中可以定义方法,方法都有一个必须传的参数self
# 实例化
# 实例、对象
# 对象查看属性
# 对象调用方法

class Person:       # 类名,大驼峰    country = "china"  # 创造了一个只要是这个类就一定有的属性(静态属性)    def __init__(self,*args): # 初始化方法,self是对象,是一个必须传的参数        # self就是一个可以存储很多属性的大字典        self.name = args[0] # 往字典里添加属性的方式发生了一些变化        self.age = args[1]        self.hp = args[2]        self.att = args[3]        self.sex = args[4]    def walk(self,n): # 方法,一般情况下必须传self参数,且必须写在第一个                    # 后面还可以传其他参数,是自由的        print("%s行走了%d步"%(self.name,n))alex = Person("王二",27,100,10,"男")alex.walk(12)print(Person.country)print(alex.name)print(alex.__dict__) # 查看所有属性 ----------------------------------------------------------------------- #人狗大战
class Dog:     def __init__(self,name,ph,att):         self.name = name         self.ph = ph         self.att = att     def bite(self,people):         people.ph -= self.att         print("%s咬了%s,%s剩余血量%d"%(self.name,people.name,people.name,people.ph)) class People:     def __init__(self,name,ph,att):         self.name = name         self.ph = ph         self.att = att     def attack(self,dog):         dog.ph -= self.att         print("%s打了%s,%s剩余血量%d" % (self.name, dog.name, dog.name, dog.ph)) jin = Dog('金老板',100,20,)        # 实例化 alex = People('alex',999,998) jin.bite(alex) print(alex.ph)
 

 

# 定义类

# class
# 函数 : 方法 动态属性 # 类中可以定义方法,方法都有一个必须传的参数self
# 变量 : 类属性 静态属性 # 类中可以定义静态属性
# __init__方法 初始化方法
# python帮我们创建了一个对象self
# 每当我们调用类的时候就会自动触发这个方法。默认传self
# 在init方法里面可以对self进行赋值
# self是什么 self拥有属性都属于对象
#在类的内部,self就是一个对象
# alex = Person()
# alex.walk == Person.walk(alex)
# 实例化
# 对象 = 类(参数是init方法的)
# 实例、对象 完全没有区别
# 对象查看属性
# 对象.属性名
# 对象调用方法
# 对象.方法名(参数) #类名.方法名(对象名,参数)

转载于:https://www.cnblogs.com/wzc27229/p/11134289.html

你可能感兴趣的文章
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
java 第11次作业:你能看懂就说明你理解了——this关键字
查看>>
C/C++心得-结构体
查看>>
函数名作为参数传递
查看>>
apt-get for ubuntu 工具简介
查看>>
数值计算算法-多项式插值算法的实现与分析
查看>>
day8-异常处理与网络编程
查看>>
Python基础-time and datetime
查看>>
Linux epoll 笔记(高并发事件处理机制)
查看>>
shell脚本练习01
查看>>
WPF图标拾取器
查看>>
通过取父级for循环的i来理解闭包,iife,匿名函数
查看>>
HDU 3374 String Problem
查看>>
数据集
查看>>
打印python包含汉字报SyntaxError: Non-ASCII character '\xe4' in file
查看>>
[Leetcode] unique paths ii 独特路径
查看>>
HDU 1217 Arbitrage (Floyd + SPFA判环)
查看>>
IntelliJ idea学习资源
查看>>
Django Rest Framework -解析器
查看>>