【Day2】3.面向对象编程
课程目标
1. 面向对象编程
2. 类和实例
3. 访问限制
4. 实例属性和类属性
面向对象编程
• 面向对象编程是一种程序设计思想
• 面向对象把类和对象作为程序的基本单元
• 对象包含属性和方法
• 面向过程编程为:函数的调用集合
• 面向对象编程为:对象之间传递信息的集合
• 处处皆对象
类和实例
• 类可以理解为图纸或者模版
• 实例是根据类的图纸或者模版创建出来的一个一个对象
• 类定义class,关键字self
• 类的初始化函数__init__
• 面向对象三大特点:继承,封装,多态
• 属性和方法
访问限制
• 通过”__”两个下划线可以修饰私有变量
• 通过编写get和set方法来修改对象的属性
• Python中没有真正的私有属性和私有方法
实例属性和实例方法
• 实例属性
class Student(object):
def __init__(self, name):
self.name = name
s = Student('Bob')
s.score = 90
• 类属性
class Student(object):
name = 'Student'
print(Student.name)
class Student(object):
total = 20 #类属性 公有的 #方法 self指向创建的实例本身 __name 私有属性 def __init__(self,name,score): self.__name = name self.__score = score def print_score(self): print('%s: %s' % (self.__name,self.__score))
def get_grade(self):
if(self.__score >= 90):
return 'A'
elif(self.__score >=60):
return 'B'
else:
return 'C'
def set_score(self,score):
if 0<=score<=100:
self.__score=score
else:
raise ValueError('分数请大于0小于100')
self.__score = score
def get_score(self):
return self.__score
# 实例化对象 xiaohong = Student('xiaohong',98) xiaobai = Student('xiaobai',81)
xiaolv = Student('xiaolv',55) # print(xiaohong.name,xiaohong.score) # print(xiaobai.name,xiaobai.score)
print(xiaolv.set_score(80))
print(xiaolv.get_score())
print(Student.total)
• 括号中object表示继承自哪个类
• 类外面的是函数,类里面的是方法
• self表示类本身
• 两个相同的实例对象会有两个内存空间,占据的内存空间也可能不同
• python没有真正的私有变量,把私有变量改成名称__Student__name
小结
• 面向过程和面向对象编程
• 类由属性和方法组成
• 对象是类的实例化
• 属性可以封装,并声明私有属性
• 类属性和实例属性