面向对象

时间:2021-07-12
本文章向大家介绍面向对象,主要包括面向对象使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

面向对象

什么是面向对象,以及和面向过程的对比

面向过程:
    面向过程其实是一种编程思想
    优点:
    	复杂的问题简单化,流程化
    缺点:
    	扩展性差,可维护性差
 面向对象:
	对象就是一个盛放数据和功能的容器,比函数整合程度高的一个容器
    优点:
    	扩展性强
    缺点:
    	简单的问题复杂化

类的定义和对象的产生

类:
	一系列对象相似的数据和相似的功能的结合体
对象:
	数据和功能的结合体
    
于现实中是先有对象后有类,但是程序中是现有类,然后调用类实例化产生对象

类的定义:
"""
class 类名():
	pass
	
类名首字母一般是大写
"""
# 拿这个实现统计一个类被实例化多少次,来举例
class Student():         #定义类
    count = 0
    def  __init__(self,name):  # 定义类的__init__方法,私有数据,初始化方法
        self.name = name
        Student.count += 1
    

stu_obj1 = Student('lyh')      # 调用类,实例化产生对象,
stu_obj2 = Student('lyh')
stu_obj1.__dict__              # 查看对象的名称空间
print(Student.count)

定义类发生的几件事:
	1.调用类,运行类体代码,注意这里和函数的区别,函数体代码是函数定义阶段不运行,只在函数调用阶段运行,而类,在定义的时候就运行了类体代码
    2.产生类体代码变量名的名称空间
    3.把这个名称空间绑定给类名
    
调用类发生的事:
	1.产生一个空对象,并且把该空对象当初第一个参数传递

属性查找方法

class Student():
    school = 'ShangHaiOldbay'
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
        self.courses = []
        
    def choose_course(self, course_name):
        self.courses.append(course_name)

stu1 = Student('egon', 19, 'male')
stu2 = Student('jason', 20, 'male')

print(Student.school)       # 类的属性查找,用类名点
Student.school = 'xxxx'     # 类的属性修改
Student.choose_course()
del Student.school          # 类的属性删除
Student.xxx = 'xxxx'        # 类的属性添加

stu1.school                 # 对象的属性查找
stu1.school = 'xxxx'        # 对象的属性修改
stu1.name
stu1.xxx = 'xxxx'           # 对象的属性添加
del stu1.xxx                # 对象的属性删除

'''
类中的属性是给所有对象的,类中的方法是给对象用的,并且会把对象自己当作第一个参数
类属性改变,它实例化的对象全都会变,,但是对象自己变了只影响自己,也就是对象只能自己玩
'''

原文地址:https://www.cnblogs.com/lyh-cur/p/15002055.html