首页 > 其他分享 >什么是面向对象?

什么是面向对象?

时间:2022-10-13 18:23:50浏览次数:47  
标签:__ .__ name 对象 什么 面向对象 Student 属性

面向对象

一、什么是类?

类,就是具有共同特征的事物的抽象描述,这个描述分两种:特征描述和行为描述 
系统自带类:int str dict float bool
自定义类: 编程时自己定义的class

二、什么是对象?

对象是一个数据与函数的集合体
具体的人,具体的学生,具体的物资轴承阀门
对象好比一个化妆盒,有材料 ,有工具,是一个数据与函数的集合体

三、敲代码之前要思考什么?

思考\总结\归类\升华
第一步:在程序中,一定要先定义类,把对象之间共同的东西先想好,定义出来,给它丢进去.
第二步,定义类后,再调用类,产生对象.
以后在面向对象编程的时候,先不要想代码,要先想在程序中,有哪些数据和功能能够整合在一起.

四、什么是面向对象编程?

4.1类的定义与实例化

类有两种属性,数据属性与函数属性,可以通过__dict__访问属性的值
class Student:  # 驼峰
    school = '哈佛大学'  # 数据
    # #该方法会在对象产生之后自动执行,专门为对象进行初始化操作,可以有任意代码,但一定不能返回非None的值

    def __init__(self, name, age, gender):  # 定义特征
        self.__name = name
        self.__age = age
        self.__gender = gender

    def choose(self):  # 功能
        print(fr"{self.__name}\ {self.__age}\ {self.__gender}")  # 功能1是输出

先看类class Student的容器内容

print(Student.__dict__)  # {'__module__': '__main__', 'school': '哈佛大学', '__init__': <function Student.__init__ at 0x000001DF89AFDCF0>, 'choose': <function Student.choose at 0x000001DF89AFDD80>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>, '__doc__': None}

然后实例出三个学生

stu1 = Student("张三", 18, '男')  # 每实例化一次Student类就得到一个学生对象
stu2 = Student("李四", 19, 'male')
stu3 = Student("王二麻", 20, 'female')

会产生对象的名称空间,同样可以用__dict__查看

print(stu1.__dict__)  # {'_Student__name': '张三', '_Student__age': 18, '_Student__gender': '男'}

"哈佛大学" 作为共有属性,在类中存放,节省空间
stu1.__name = '张三三'

4.2属性访问

4.2.1类属性与对象属性

类有两种属性:数据属性和函数属性,可以通过__dict__访问属性的值 操作对象的属性也是一样

print(Stu1.school)  # 哈佛大学
print(Stu1.choose)  # <function Student.choose at 0x000001FE8237DD80>
print(stu1.__name)  # 张三三
Student.school = '哈哈大学'
print(Student.school)  # 哈哈大学

重要的一点: stu1.__name = '牧之' 和 stu1._Student__name = '张麻子',,《是不一样的》

stu1.__name = "牧之"
stu1._Student__name = '张麻子'
print(stu1.__dict__)
# {'_Student__name': '张麻子', '_Student__age': 18, '_Student__gender': '男', '__name': '牧之'}

4.2.2属性查找顺序与绑定方法

对象的名称空间里只存放着对象独有的属性,而对象们相似的属性是存放于类中的。
对象在访问属性时,会优先从对象本身的__dict__中查找,未找到,则去类的__dict__中查找
1、类中定义的变量是类的数据属性,是共享给所有对象用的,指向相同的内存地址 # 哈哈大学
2、类中定义的函数是类的函数属性,类可以使用,但必须遵循函数的参数规则,有几个参数需要传几个参数
类中定义的函数主要是给对象使用的,而且是绑定给对象的,虽然所有对象指向的都是相同的功能,
但是绑定到不同的对象就是不同的绑定方法,内存地址各不相同

标签:__,.__,name,对象,什么,面向对象,Student,属性
From: https://www.cnblogs.com/leeyong49/p/16789206.html

相关文章

  • 我为什么喜欢原子化CSS
    用Unocss已经有几个月了,从使用者的角度来说说我为什么喜欢上了原子化css。类似“原子化css”的概念其实很早之前就有,比如Bootstrap的css工具类已经很接近现在的原子化css......
  • 为什么需要定期进行服务器备份?
    ​为什么需要定期进行服务器备份?可以想象一下,如果有一天网站服务器中的所有数据都被删除了?丢失了所有数据,对您的影响有多大?定期备份数据的重要性就在这里。网站服务......
  • Baklib|FAQ页面是什么?为什么它是必要的?
    谷歌在做搜索引擎优化的时候,对网站的质量也越来越看重,所以我们经常会把网站的主要内容放在首页,AboutUs页面,产品详情页,新闻信息页。事实上,也有一些网页是不能忽略的,比如:FAQ......
  • 视频融合平台EasyCVR级联小众平台,需要注意什么?
    EasyCVR具备强大的视频接入、汇聚与管理、视频分发等视频能力,可实现的视频功能包括:视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、服务器集群、智......
  • AJAX到底是做什么的??
    首先,作为一个IT新手,在学校学到AJAX课程时,一般都是发送页面请求给接口来调用数据,所以让人理解为AJAX就是用来让前后端交互的工具,时间一长,大家会说哦,前后端交互啊,那就用AJAX......
  • 视频融合平台EasyCVR级联小众平台,需要注意什么?
    EasyCVR具备强大的视频接入、汇聚与管理、视频分发等视频能力,可实现的视频功能包括:视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、服务器集群、......
  • js操作DOM为什么会影响性能
    DOM是什么?DOM(DocumentObjectModel——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API。DOM是载入到浏览器中的文档模型,以节点树的形式来表现文档,每个节点代......
  • 01-什么是渲染引擎
    在开始写代码之前,要先明确渲染引擎到底是什么东西,才能知道要写什么东西。在Google里面搜索......
  • 关于用什么编译器写c语言
    前言:用了一个月的vscode写c的体验真心不推荐vscode写c语言,用了一个多月vscode上配置了c和python,还要下什么mingw,去b站搜索视频推荐第一个安装教程教你下载的32位,配置就是......
  • Python 为什么不支持 switch 语句?
    本文出自“Python为什么”系列,请查看​​全部文章​​在这篇文章里,我们会聊一聊为什么Python决定不支持switch语句。为什么想要聊这个话题呢?主要是因为switch在其它语......