首页 > 其他分享 >十、面向对象基础

十、面向对象基础

时间:2024-07-19 08:59:13浏览次数:7  
标签:__ name 对象 self 基础 面向对象 方法 属性

文章目录

学习目标

  • 说出面向对象和面向过程的特点
  • 能够使用dir内置函数查看对象的方法
  • 能够使用类创建对象
  • 能够说出self的含义
  • 能够说出魔法方法什么时候调用
  • 能够说出内置属性的作用
  • 能够说出实例属性和类属性的区别
  • 能够定义和操作使用属性

一、面向对象介绍

  • 面向过程:根据业务逻辑从上到下写代码
  • 面向对象:将 变量与函数 绑定到一起,分类进行封装,每个程序只负责分配给自己的分类,这样能够更快速的开发程序,减少了重复代码

二、类和对象

  • 对象是面向对象编程的两个核心概念

2.1 类

类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用

  • 特征其实就是一个变量,在类里我们称之为属性
  • 行为其实就是一个函数,在类里我们称之为方法
  • 类其实就是由 属性方法 组成的一个抽象概念

2.2 对象

对象是由类创建出来的一个具体存在,可以直接使用。由哪一个类创建出来的 对象,就拥有在哪一个类中定义的属性和方法

2.3 类的设计

在程序开发中,要设计一个类,通常需要满足一下三个要素:

  1. 类名 这类事物的名字,按照大驼峰命名法(每个单词的首字母大写)起名
  2. 属性 这类事物具有什么样的 特征
  3. 方法 这类事物具有什么样的 行为
# 定义类:class关键字
# class 类名:类名按照大驼峰命名法(每个单词的首字母大写)起名
# 1. class <类名>
# 2. class <类名>(object)

class Student(object):

    def __init__(self,name,age,height): # 在 __init__ 方法里,以参数的形式定义属性
        self.name = name
        self.age = age
        self.height = height
    def run(self):
        print('正在跑步')

    def eat(self):
        print('正在吃东西')

# 使用 Student类 创建了两个实例对象 s1 s2
# s1和s2都会有name,age,height属性,同时都有run和eat方法
s1 = Student('小明',18,1.8)
s2 = Student('小美',19,1.65)

2.4 self语句的使用

class Student:
     # 这个属性直接定义在类里,是一个元组,用来规定对象可以存在的属性,可以限制动态属性的设置
    __slots__ = ('name','age')
    def __init__(self,x, y):
        self.name = x
        self.age = y
# Student('张三',18) 这段代码具体做了什么呢?
# 1. 调用 __new__ 方法,用来申请s内存空间
# 2. 调用 __init__ 方法传入参数,并让 self 指向申请好的那段内存空间,填充数据
# 3. 变量 s1 也指向创建好的这段内存空间
s1 = Student('张三', 18)

# 直接使用等号给一个对象的属性赋值
# 如果这个属性以前不存在,会给对象添加一个新的属性
# 动态属性
s.city = '上海' # 给对象添加了一个city属性

# 如果这个属性以前存在,会修改这个属性
s.name = 'jack'

三、魔法方法

3.1 对象操作的魔法方法

# 魔法方法,也叫魔术方法,是类里的特殊的一些方法
# 特点
# 1. 不需要手动调用,会在合适的时机自动调用
# 2. 这些方法,都是是使用 __ 开始,使用 __ 结束
# 3. 方法名都是系统规定好的,在合适的实际自己调用

class Person(object):
    # __init__ 魔法方法在创建对象时,会自动调用这个方法
    def __init__(self,name,age

标签:__,name,对象,self,基础,面向对象,方法,属性
From: https://blog.csdn.net/weixin_44063529/article/details/140398760

相关文章

  • 神经网络和Transformer基础
    一、矩阵乘法A*M=B。  其中,A表示原矩阵,是原空间的一组向量(数据点); M表示空间变换规则;B表示转换后新空间的一组向量(数据点)举例:比如1*2的向量,和矩阵2*3进行相乘,结果是1*3。说明向量(数据点)还是1个,数据维度从2升成3,从2维平面向量(数据点),变换到了3维立体空间的向量......
  • 操作系统基础(一)
    目录一.定义计算机系统层次结构二.功能一:资源管理者处理机管理存储器管理文件管理设备管理三.功能目标二:实现用户接口(向上层提供服务)GUI图形化用户接口联机/脱机命令接口程序接口四.操作系统的特征并发性共享性虚拟异步五.操作系统发展与分类手工操作阶段批处理......
  • Java基础 韩顺平老师的 集合 的部分笔记
    498,集合介绍 499,集合体系图(两个图背下)  packagecom.hspedu.collection;importjava.util.ArrayList;importjava.util.HashMap;publicclassCollection01{publicstaticvoidmain(String[]args){//老韩解读//1,集合主要是两组(单列......
  • 0基础学python-17:文件读写
    目录前言文件读写三步走:        打开文件-->读写文件-->关闭文件一、打开文件1.文件位置绝对位置:相对位置:2.open()方法二、读写文件1.读取文件2.写入文件三、关闭文件1.close()2.with语句前言        读写文件是最常见的IO操作。Python内置......
  • 高速接口自用笔记:GT基础(二)
    FPGA中相同BANK的电压需要一致,以实现高效的性能。本章是对GT基础(一)的补充。大量搬运:公众号-数字站:https://mp.weixin.qq.com/s/Z8ti7DIMdWEh8ogM0SQU4ghttps://mp.weixin.qq.com/s/0YoA9jhBOheZFwtTDJ75aQ 老哥写的很好,推荐都去看。小知识点:1.通过原语BUFDGE得到的时钟,可......
  • Java基础-基本类型和包装类型
    基本类型Java有八种基本类型intfloatdoublelongbooleancharshortbyte基本类型如果是局部变量,那它们的位置会在虚拟机栈种。如果是成员变量它们会存放在堆中。包装类型相对应的Java也有八种包装类型IntFloatDoubleLongBooleanCharShortByte区别1.默认值:......
  • Java基础常见面试题总结(下)
    目录异常Exception和Error有什么区别?Throwable类常用方法有哪些?  try-catch-finally如何使用?finally代码块中的代码一定会执行吗? 异常使用有哪些需要注意的地方? 泛型什么是泛型?有什么作用?泛型的使用类型有哪几种?项目中哪里使用到了泛型?反射反射是什么? ......
  • JS面向对象(一)类与对象写法
    注释很详细,直接上代码新增内容:1.类的基本用法2.类的继承用法3.类的this指向问题项目结构:仅一个文件源码:index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="w......
  • Java基础-Java代码变成机器可执行代码过程
    1Javac编译因为JVM把Javac把Java代码编译成字节码,即把.java文件变成.class文件,JVM(Java虚拟机)可以理解字节码文件,将其转换为机器可以执行的代码,所以只要安装了JVM的平台,都可以运行Java程序。2JVMJavac编译后,Java文件就变成了字节码文件,JVM类加载器会去加载字节码文件,然后由解......
  • Java基础第三弹
    文章目录Java基础知识全解第三弹一、面向对象编程1.1面向对象编程思想1.2类和对象关系1.2.1类1.2.2对象2.对象创建和使用3.构造方法4.方法的调用5.java的内存结构6.成员变量和局部变量7.方法的重载二、this、static关键字1.this2.static(静态的)三、包1.包的由来2......