面向对象是一种编程思想,用这种思想为指导设计的程序,把数据和对数据的操作封装在一起组成类,通过类来创建对象,通过对象之间的交互来实现程序的功能。
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用
上述两种编程思想没有优劣之分 需要结合实际需求而定
如果需求是注册 登录 人脸识别肯定面向过程更合适
如果需求是游戏人物肯定是面向对象更合适
实际编程两种思想是彼此交融的 只不过占比不同
对象:
类:
现实中一般是先有对象再有类
程序中如果想要产生对象 必须要先定义出类
1、语法结构
class 类名:
'''代码注释'''
对象公共的数据
对象公共的功能
1.class是定义类的关键字
2.类名几乎和变量名一致,使用的时候推荐类名的首字母大写
3.数据:
变量名与数据值的绑定
功能:
功能(方法)其实就是具有一定功能的函数
2、定义与调用
需求:
查看类的名称空间:
print(Student.__dict__)
# {'__module__': '__main__', 'school_name': '清华大学', 'choice_course': <function Student.choice_course at 0x0000018FCCCD5670>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>, '__doc__': None}
print(Student.__dict__.get('school_name'))
# 清华大学
print(Student.__dict__ .get('choice_course'))
# <function Student.choice_course at 0x000001417B975670>
类的调用:
1、调用对象
obj1 = Student()
# <__main__.Student object at 0x000001992C2759D0>
obj2 = Student()
# <__main__.Student object at 0x000001992C278E50>
obj3 = Student()
# <__main__.Student object at 0x000001992C278E20>
'''
三个变量名的地址各不相同,产生三个对象
'''
2、查看对象内部数据
print(obj1.__dict__,
obj2.__dict__,
obj3.__dict__)
# {} {} {}
'''
三个对象各自内部都为空
'''
3、调用对象共同数据
print(obj1.school_name)
# 清华大学
print(obj2.school_name)
# 清华大学
print(obj3.school_name)
# 清华大学
'''
同一类产生的对象,都可使用类内部公用数据值
'''
数据和功能可称统称为属性:
数据>>>属性名
功能>>>方法
在上述使用类产生对象时,我们可以看出产生的对象并没有自己特有的数据,针对如何给对象手动添加独有数据,python提供了多种方式,其中前4种方式主要为推导第五种方式而来,我们只需简单了解即可,在日后我们重点使用的是第五种方式
第一种:
第二种:
第三种:
第四种:
第五种:
class Student:
# 对象公用的数据
school_name = '清华大学'
# 专门给学生添加独有数据的功能
def __init__(self, name, age, hobby):
self.__dict__['name'] = name
self.__dict__['age'] = age
self.__dict__['hobby'] = hobby
# 对象公共的功能
def choice_course(self):
print('学生选课功能')
stu1 = Student('kangkang', 18, 'read')
stu1 = Student('zhangzhang', 18, 'ball')
上述学习了如何给相同类对象添加独有数据的方式,下面我们要学习如何给对象添加独有功能
思考:
解决方法:
class Student:
# 对象公用的数据
school_name = '清华大学'
# 专门给学生添加独有数据的功能
def __init__(self, name, age, hobby):
self.__dict__['name'] = name
self.__dict__['age'] = age
self.__dict__['hobby'] = hobby
# 对象公共的功能
def choice_course(self):
print('学生选课功能')
stu1 = Student()
Student.choice_course(stu1)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。