面对对象编程基础

面对对象编程
什么是面对对象编程?
  面对对象编程时一种编程思想,它的核心是"对象"。在面对对象编程语言中,具有相同属性或能力的模型是使用类进行定义喝表示的
  对象是什么东西? 
  对象是"容器",用来盛放数据与功能的
  对象的终极奥义就是将程序"整合"
  类也是"容器",该容器用来存放同类对象共有的数据与功能

# 程序 = 数据 + 功能

# 学生的数据
stu_name = 'wuxie'
stu_age = 18
stu_gender = 'male'

# 学生的功能
def tell_info():
    print(f'名字:{stu_name},年龄:{stu_age},性别:{stu_gender}')

def set_info(x,y,z)
    global stu_name
    global stu_age
    global stu_gender

    stu_name = x
    stu_name = y
    stu_name = z
类与对象
在python中,把具有相同属性和方法的对象归为一类,比如,人类,动物,植物

在使用类之前必须先创建这个类,语法格式如下
class Students:
    语句
* class: 定义类的关键字
* Students: 类的名字,在python中,类的首字母大写

类只有实例化后才能够使用,类的实例化与函数的调用类似,只要使用类名加小括号的形式就可以实例化一个类。

# 先定义类
 class Student:
     # 变量的定义
     stu_school = 'old'
     # 功能的定义
     def tell_stu_info(stu_obj):
         print("学生姓名: 名字:%s 年龄:%s 性别:%s" %(
               stu_obj['stu_name'],
               stu_obj['stu_age'],
               stu_obj['stu_gender']
             ))
    print('>>>>1')

>>>
>>>>1

# 类是最常见的变量与属性的定义,但是类体其实是可以包含任意其他代码的
# 注意:类体代码是在类定义阶段就会立即执行,会产生类的名称空间

# 类的名称空间 使用__dict__查看 字典格式

# 属性的访问语法
print(Student.stu_school)  # Student.__dict__['stu_school']


# 再调用类产生对象

stu1.obj = Student()  # stu1.obj即为对象

# 定义类并使用类
可以使用关键字def在类的内部定义一个方法。在定义类的方法后,可以让类具有一定的功能,定义类方法与其他函数的定义方式一样,但是有以下区别
1.方法的第一个参数必须是self,而且不能省略
2.方法的调用需要实例化类,并以"实例名.方法名(参数列表)"的形式调用
3.必须整体进行一个单位的缩进,表示这个方法属于类体的内容


# 初始化对象
__init__()


# 在调用类的过程称之为实例化,发生了三件事

1. 先产生一个空对象
2.python会自动调用类中__init__方法然将空对象已经调用类时括号内传入的参数一同传给__init__方法
3. 返回初始化对象


# 总结__init__方法
1.会在调用类时自动触发执行,用来为初始化自己独有的数据
2.__init__内应该存放时为对象初始化属性的功能,但是是可以存放任意的其他代码,想要在类调用时立即执行的代码都可以放大改方法内
3.__init__方法必须返回None
类的属性查找
类中存放的是对象共有的数据与功能
# 类中可以访问
1.类中的数据属性
2.类中的函数属性

类中的数据属性是共享给所有对象用的,大家访问的地址都一样
类的函数属性是绑定给对象用的,而且是绑定给对象的
类调用自己的函数属性必须严格按照函数的用法来
# 现在自己的对象中找,没有再到类中属性找