面向对象,类

面向对象编程

参考博客: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)
#长方形周长(长加宽)*2 面积 长*宽

猜你喜欢

转载自www.cnblogs.com/huxl1/p/10992205.html