面向对象

一、什么是类?

类,就是具有共同特征的事物的抽象描述,这个描述分两种:特征描述和行为描述 
系统自带类: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、类中定义的函数是类的函数属性,类可以使用,但必须遵循函数的参数规则,有几个参数需要传几个参数
类中定义的函数主要是给对象使用的,而且是绑定给对象的,虽然所有对象指向的都是相同的功能,
但是绑定到不同的对象就是不同的绑定方法,内存地址各不相同

原文地址:http://www.cnblogs.com/leeyong49/p/16789206.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性