python基础学习笔记 2023/2/6
主要学习了初步的面向对象。面向对象编程是从大的角度来看问题,将任务拆解。面向过程是按照解决问题的步骤思考,第一步到最后一步。面向对象和面向过程是不可分割的,设计解决问题的总体规划用的是面向对象的思想,在具体落实时用的是面向过程的思想。
类
如果对象是饼干,那么类就是制作这个饼干的模具。
类是抽象的,也称为“对象的模板”,必须通过这个模板,创建类的实例对象,才能使用这个类所定义的功能。
一个python对象包含如下部分:
- id
- type
- vaule
(1) 属性
(2) 方法
class Student:
def __init__(self,name,score): #构造方法第一个参数必须为 self
self.name = name #实例属性
self.score = score
def say_score(self): #实例方法
print(self.name,'的分数是:',self.score)
s1 = Student('张三',80) #s1 是实例对象,自动调用__init__()方法
s1.say_score()
实例包括:实例属性,实例方法
类本身也包括:类属性,类方法
上图可以看出,类的实例化对象的属性是单独存储的,而实例化对象的方法是存储在类本身的。
类本身也是对象,这个对象的类型是type
类也有自身的属性和方法。
类方法通过@classmethod来定义,如
class Student:
company = 'abc' #类属性
@classmethod
def printCompany(cls): #定义类方法
print(cls.company)
Student.printCompany() #调用类方法
实例化对象的内存分析,如下列过程:
class Student:
company = "尚学堂" #类属性
count = 0 #类属性
def __init__(self,name,score):
self.name = name #实例属性
self.score = score
Student.count = Student.count+1
def say_score(self): #实例方法
print("我的公司是:",Student.company)
print(self.name,'的分数是:',self.score)
s1 = Student('高淇',80) #s1 是实例对象,自动调用__init__()方法
s1.say_score()
print('一共创建{0}个 Student 对象'.format(Student.count))
首先,类的属性(company和count)存储在Student类对象中,同时,还存储了实例方法say_score。实例化对象s1存在另外一个内存空间中,里面包含了实例化对象的属性。同时,把这个对象的地址赋值给了s1。