面向对象,类
Posted huxl1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象,类相关的知识,希望对你有一定的参考价值。
面向对象编程
参考博客:www.cnblogs.com/Eva-J/p/7277026.html
编程:
1面向流程编程:核心是过程,
2面向对象编程:解决了程序的扩展性,对某一个对象单独的修改,会立刻反应到整个体系中,如游戏中的一个人的参数的特征和技能修改都很容易
缺点: 可控性差。无法向面向过程的程序设计流水线式的可以很精准预测问题的处理流程和结果,
3面向函数编程
#以对象编程,先定义一个模子 #定义个人的函数 def People(name,blood,shashang): #定义人的拥有的属性 people = ‘name‘:name, ‘blood‘:blood, ‘shashang‘:shashang return people #定义一只狗的模子 def Dog(name,blood,shashang): #定义狗拥有的属性 dog = ‘name‘:name, ‘blood‘:blood, ‘shashang‘:shashang return dog #定义攻击 def people_dog(people,dog): dog[‘blood‘] -= people[‘shashang‘] print("%s被%s打了,掉血%s"% (dog[‘name‘],people[‘name‘],people[‘shashang‘])) #定义一个人对象 alxe = People(‘小小‘,100,10) dog = Dog(‘反帝‘,200,20) ret = people_dog(alxe,dog) print(ret)
初识类
1 定义类
class Person: #定义一个类
country = ‘china‘ # 这是定义了个类属性,是静态属性
def __init__(self,#args) # 调用一个类时,就相当于调用了init
self.name= args[0] #对象属性
self.hp = args[1]
self.aggr = args[2]
def work(self): #定义一个方法
print(self.name)
#调用类
alex = Person(‘xiao‘,100,1) #alex 是定义的对象 alex 就等于 self 这过程叫实例化
print(alex.name)
对象做的事:alex
1 对象可以查看属性, self.name
2也可以调用方法 alex.work()
3 alex.name = ‘‘ 可以对属性进行修改,查看 , 删除
类名的做事 Person
1 实例化
2 调用,传递self参数
3 调用类属性 People.china() 这是静态参数 这个类的属性只能看不能改
print(alex.__dict__) 查看内部包含的方法
class People: #定义个人的类 def __init__(self,name,blood,hai): self.name = name self.blood = blood self.hai = hai def gongji(self,d): d.blood -= self.hai if d.blood <= 0: print("%s死亡"% d.name) else: print("%s 被 %s 打了,掉血%s" %(d.name,self.name,self.hai)) class Dog: #定义个狗的类 def __init__(self,name,blood,hai): self.name = name self.blood = blood self.hai = hai def gongji(self,p): pass alex = People(‘小小‘,200,10) #调用人的类 alex 就是 slef dog = Dog("反帝",100,20) #调用狗类 创建一个对象 , 这是实例化过程 alex.gongji(dog)
在什么时候考虑用类
#当有几个函数,需要反复传入相同的参数的时候,就可以考虑面向对象
#非常明显的处理一类事物,这些事物都具有相似的属性和功能
#写一个圆 半径 求周长 2πr 和面积 πr**2 from math import pi class Circle: def __init__(slef,r): self.r = r def area(self): return pi*(self.r**2) def perimeter(self): return 2*pi*self.r c1 = Circle(5) print(c1.area()) print(c1.perimeter())
#长方形周长(长加宽)*2 面积 长*宽 class Chang: def __init__(self,p,r): self.p = p self.r = r def zhouchang(self): zc = (self.p + self.r) * 2 return zc def mianji(self): mj = self.p * self.r return mj chang = Chang(10,5) # print(chang.p) ret = chang.zhouchang() print(ret)
以上是关于面向对象,类的主要内容,如果未能解决你的问题,请参考以下文章