面向对象
面向对象思想
对象就是一个实实在在的可以准确描述出来的实体
面向对象的编程是一种上帝视角的切换
之前使用的面向过程的编程是面向结果去编程,一个流水线
下来有固定的结果。
面向过程的编程好想,缺点是可扩展性差,容易引起代码的安全问题
面向对象
类:具有相同属性和方法的一类事物
对象:具有具体的属性的事物
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)
静态属性 类属性,所有的对象共有的属性,可以直接被类调用
对象属性,只属于某一个对象的,必须在实例化之后用对象调用
面向对象在什么时候用:需要反复传递相同的参数给一些函数的时候
类名可以调用类属性 可以查看类方法但是不能调用类方法
对象名可以调用对象属性,可以调用类属性
对象名.方法()