086.面向对象和面向过程的区别_执行者思维_设计者思维
Python支持面向过程(更加关注流程,适合编写小程序)、面向对象(编写大规模)、函数式编程等多种编程范式
依然支持面向对象的基本功能:继承、多态、封装
087.对象的进化故事
进化过程:简单数据;数组;结构体;对象
088.类的定义_类和对象的关系
类:用来产生对象的对象(一切皆对象);将方法(函数)和属性放在一起;
对象的结构:方法(由同一个类创建的所有对象共享)和属性(每个对象维持自己的属性)
class Student:
def __init__(self,name,sorce):#固定用法
self.name=name
self.sorce=sorce
def any_score(self):
print("{0}的分数是:{1}".format(self.name,self.sorce))
s1=Student("lala",12)
s1.any_score()
089.构造函数__init__
__init__方法():初始化创建好的对象
__new__方法():用于创建对象,无需重定义该方法
<注>所有构造器第一个参数必须为self;名称固定__init__();构造函数通常用来初始化对象的实例属性(与C++里的一样);通过类名来调用构造函数,构造函数没有返回值;
<注>python中的self相当于C++中的self指针,Java中和C#中的this指针;Python中,self必须为构造函数的第一个参数,名字可以任意修改,但遵守惯例,都叫做self
090.实例属性_内存分析
实例属性是从属于实例对象的属性,也称为“实例变量”,其使用的要点如下:
1.实例属性一般在__init__()方法中通过:self.实例属性名=初始值 来定义
2.在本类的其他实例方法中,也是通过self进行访问:self.实例属性名
3.创建实例对象后,通过实例对象访问
class Student:
def __init__(self,name,sorce):#固定用法
self.name=name
self.sorce=sorce
def any_score(self):
print("{0}的分数是:{1}".format(self.name,self.sorce))
s1=Student("lala",12)
s1.any_score()
s1.age=18
print("年龄",s1.age)
s2=Student("www",15)
#print(s2.age) 因为age为s1的从属,只能被s1调用;
091.实例方法_内存分析方法调用过程_dir()_isinstance
实例方法是从属于实例对象
要点:a.定义实例方法时,第一个参数必须为self,和前面一样,self指当前的实例对象
b.调用实例方法时,不需要也不能给self传参,self由解释器自动传参
class Student:
def __init__(self,name,sorce):#固定用法
self.name=name
self.sorce=sorce
def any_score(self): #方法也是属性
print("{0}的分数是:{1}".format(self.name,self.sorce))
s2=Student("www",15)
#下面两句话是一样的
s2.any_score()
Student.any_score(s2)
<注>函数和方法的区别:
1.都是用来完成一个功能的语句块,本质一样
2.方法调用时,通过对象来调用,方法从属于特定实例对象,普通函数没有这个特点
3.直观上看,方法定义的时候需要传递self,函数不需要
<补充>
class Student:
def __init__(self,name,sorce):#固定用法
self.name=name
self.sorce=sorce
def any_score(self): #方法也是属性
print("{0}的分数是:{1}".format(self.name,self.sorce))
s2=Student("www",15)
#下面两句话是一样的
s2.any_score()
Student.any_score(s2)
print(dir(s2)) #可以获得对象所有的属性,方法
print(s2.__dict__) #对象的属性字典,即当前的属性
class Man: #空语句
pass
s3=Man()
print(isinstance(s3,Student)) #判断对象是不是指定类型
print(isinstance(s2,Student))
092.类对象
class Stu:
pass
print(type(Stu))
print(id(Stu))
Stu2=Stu
s1=Stu2()
print(s1)
093.类属性_内存分析创建类和对象的底层
类属性从属于“类对象”的属性,也称为“类变量”。由于,类属性从属于类对