2019.8.19
面向对象编程基础
把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritence)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派
一、类和对象
对象是类的实例。一切皆为对象,对象都有属性(静态特征)和行为(动态特征)。
二、定义类
关键字 class
class Student(object):
#__init__是一个特殊方法用于在创建对象是进行初始化操作
#通过这个方法我们可以为学生对象绑定name和age两个属性
def __init__(self,name,age):
self.name = name
self.age = age
def study(self,course_name):
print('%s正在学习%s.'(self.name,course_name))
说明: 写在类中的函数,我们通常称之为(对象的)方法,这些方法就是对象可以接收的的信息
三、创建和使用对象
class class_name(object):
def __init__((self):
self.a = 1000
def A(self):
print('Karry Roy Jackson')
if __name__ == "__main__":
Joker = class_name() #()相当于走了初始化__init__
Joker.A() #类中调用需要使用“.”
print(Joker.a)
(base) C:\Users\Administrator>F:/install/Anaconda/python.exe d:/VScode/Untitled-Mon1.py
Karry Roy Jackson
1000
四、访问可见性问题
在Python中,属性和方法的访问权限只有两种,也就是公开的和私有的,如果希望属性是私有的,在给属性命名时可以用两个下划线作为开头,下面的代码可以验证这一点。
class Test:
def main():
test = Test('hello')
# AttributeError: 'Test' object has no attribute '__bar'
test.__bar() #私有属性
# AttributeError: 'Test' object has no attribute '__foo' #私有属性
print(test.__foo)
if __name__ == "__main__":
main()
五、面对对象的支柱
面向对象有三大支柱:封装、继承和多态
课堂练习
打印进度条
读取文件中大写字母个数