面向对象
也是一种编程思想
核心是对象
什么是对象:对象是特征和行为的结合体
面向对象编程:关注的是使用什么样的对象可以完成我的任务
优势:1.对于指挥者来说 不需要再关心具体步骤
2.扩展性,一个单独的个体的特征或行为发生变化时 不会影响到别人
缺点:1.程序的复杂度变高,你得需要设计这个些对象,注意要避免过度设计的问题
2.程序的执行结果可控性低
类与对象
类就是分类 类型的意思
定义:一堆具备相同特征和行为的事物的抽象概念,不实际存在
类的作用:用于描述该类的对象具备什么样的特征和行为
类
语法:class关键字 类名
类名规范 大写开头 驼峰命名法
在定义阶段
只要包含该类的py被执行 就会做两件事情
1.创建类的名称空间
2.执行代码 将产生的名称放入名称空间
class Student: school='Oldboy' name= 'xia' age = 19 def func(a):#通过函数来描述该类对象的行为 print('hello') #使用类中的属性 print(Student.__dict__) print(Student.name) #使用类中的函数 print(Student.func) #使用类直接调用类中函数时,与普通函数没有区别 self仅仅是一个位置函数 Student.func(10)
对象的使用
class Student: school = '复旦大学' #创建对象 #语法:在类名后加括号 与调用函数写法相同 stu = Student() #修改属性的值 stu.school = '北大' print(stu.school) 增加属性 stu.number = '1000' print(stu.number) #删除属性 del stu.number #对象与类的名称空间是独立的 #对象的属性查找顺序 对象的名称空间->类的名称空间
__init__函数
__init__称之为初始化函数 它会在创建对象的时候自动执行 创建对象时 1.创建一个空对象 2.执行__init__函数 并且自动传入了这个对象 作用就是为对象的属性赋予初始值
class Dog: def__init__(self,name,age,color): self.name=name self.age=age self.color=color dog1 = Dog('二黑',18,'黑色') print(dog1.__dict__)
强调 1.使用场景 需要为每个对象定制不同的属性值 2.__init__在创建对象后自动执行 3.第一个self参数 指的是这个对象本身 不需要手动传值
绑定方法
绑定方式是对象与类中的某个函数的绑定关系
class Person country = 'China' def__init__(self,name,age,gender): self.name = name self.age =age self.gender = gender def sleep(self); print('sleeping') p1=Person('xia','19','male') 类调用 Person.sleep(10) 对象调用 p1.sleep() 对于类而言 sleep就是一个普通函数 对对象而言 sleep是一个绑定方法