面向对象

面向对象思想

对象就是一个实实在在的可以准确描述出来的实体
面向对象的编程是一种上帝视角的切换
   之前使用的面向过程的编程是面向结果去编程,一个流水线
   下来有固定的结果。
   面向过程的编程好想,缺点是可扩展性差,容易引起代码的安全问题
   面向对象
 类:具有相同属性和方法的一类事物
 对象:具有具体的属性的事物
 class  类名:   不写括号  定义一个类  里面写一个属性
 类名首字母要大写

class Person:
     role='person'
print(Person.role)
#类取值↑
class Person:
     role='person'
  def attack(self)
     print('attact')
print(Person.role)

在类里面方法本质上都是函数,拥有一个必须传的参数self  参数叫别的也行
实例化一个对象

alex=Person()    #创造了一个对象
alex.attack()    #当你用一个对象去调用他的方法的时候,自动的传一个参数,这个参数就是对象本身
egon=Person()
egon.attack()    #同上

都可以取值print   self哪个对象取值他就是跟谁

def __init__(self,name,sex,aggr,blood) 必须双下划綫init
    self.name=name
 self.sex=sex
 self.aggr=aggr
 self.blood=blood

与字典定义差不多,不过语法不同self必须用
self此时就相当于一个字典

alex=Person(‘alex','male',250,20000)  #向上面__init__里面传参数要实例化时候传
alex.name    #就可以拿到类中alex   name的数据
alex.attack()

类下面的方法也可以用def __init__中的数据,因为已经创建过了
self就是对象本身,类中用self调用数据

class Dog:
    def __init__(self,a,b,c,d):     对象属性
        self.name=a
        self.sex = b
        self.aggr = c
        self.blood = d
    def attack(self):
        print('%s打人了'%self.name)
egon=Dog('egon','man',500,90000)
egon.attack()

class Person:
    role='person'      静态属性
print(Person.role)

静态属性  类属性,所有的对象共有的属性,可以直接被类调用
对象属性,只属于某一个对象的,必须在实例化之后用对象调用

面向对象在什么时候用:需要反复传递相同的参数给一些函数的时候

类名可以调用类属性  可以查看类方法但是不能调用类方法
对象名可以调用对象属性,可以调用类属性
对象名.方法()

 

posted on 2017-09-14 15:03  Symoon_g  阅读(185)  评论(0编辑  收藏  举报