首页 > 其他分享 >6_面向对象基础

6_面向对象基础

时间:2022-10-17 18:15:48浏览次数:58  
标签:stu 对象 self 基础 面向对象 print 方法 属性

1.面向对象和面向过程

面向过程重点在于: 步骤

面向对象重点在于: 对象

一般大型项目都采用面向对象编程思维

2.面向对象三大特性

object:  所有类的父类,超类,上帝类,基类

封装: 把属性和方法隐藏到类中,对外提供公共的接口

继承: 子类继承了父类的属性和方法

多态: 传入不同的对象,实现不同的效果(python中的多态是伪多态,其原因是它不需要声明变量类型,导致它的类型是随着传入的参数而变化的,具体看视频)

3.类和对象

类: 类是具有相同特征和行为的一类事物的统称,是抽象的概念
特征: 属性
行为: 方法

对象: 对象是类的具体体现,实际存在的事物

类和对象关系: 先有类,再根据类创建对象

4.定义类和创建对象

知识点:

1.类的组成: 属性和方法

2.定义类的格式:		

class 类名(): 
	pass

3.创建对象的格式:   对象名 = 类名()

4.对象调用方法:    对象名.方法名()

示例:

"""
类的组成: 属性和方法(函数)
定义类的格式:
class 类名():
    pass
创建对象的格式:
对象名 = 类名()
对象调用方法:
对象名.方法名()
"""
# 1.先定义类
class Person():
    # 方法(本质就是一个函数,特殊:形参第一个位置是self)
    def study(self):
        print('好好学习,天天向上')
# 2.再创建对象
zs = Person()
# 3.对象调用方法
zs.study()

5.self关键字

知识点:

self中文含义: 自己

self在python中含义: 调用该方法的对象本身的地址

示例:

"""
类的组成: 属性和方法(函数)
定义类的格式:
class 类名():
    pass
创建对象的格式:
对象名 = 类名()
对象调用方法:
对象名.方法名()
self关键字:自己(调用该函数的对象自己)
"""

# 1.先定义类
class Person():
    # 方法(本质就是一个函数,特殊:形参第一个位置是self)
    # self谁调用该方法,self就代表谁
    def study(self):
        print('self:', self)
        print('好好学习,天天向上')


# 2.再创建对象
# 3.对象调用方法
zs = Person()
print('张三:',zs)
zs.study()

ls = Person()
print('李四:',ls)
ls.study()

6.打印对象地址的两种方式

知识点:

1. 直接打印对象名,即print(对象名): 显示的是16进制格式的地址

2. id函数打印对象名: 显示的是10进制格式的对象地址

示例:

# 1.先定义类
class Person():
    # 方法(本质就是一个函数,特殊:形参第一个位置是self)
    # self谁调用该方法,self就代表谁
    def study(self):
        print('好好学习,天天向上')


# 2.再创建对象
zs = Person()
print('直接打印对象显示的是16进制格式:', zs)
print('使用id(对象名)显示的是10进制格式:', id(zs))
# 3.对象调用方法
zs.study()


7.类外添加属性和获取属性

知识点:

类外添加对象属性: 对象名.属性 = 值

类外获取对象属性: 对象名.属性

示例:

"""
类外添加对象属性: 对象名.属性 = 值
类外获取对象属性: 对象名.属性
"""
# 1.定义类
class Student():
    # 定义学习方法
    def study(self):
        print('我在学习')

# 2.根据类创建对象
stu = Student()
# 3.给stu对象添加属性
stu.name = '斌子'
stu.age = 18
# 4.获取stu对象的属性
print('姓名:' ,stu.name)
print('年龄:' ,stu.age)

8.类内添加属性和获取属性

知识点:

类内添加对象属性: self.属性 = 值   #self是对象的地址

类内获取对象属性: self.属性

示例:

"""
类内添加对象属性: self.属性 = 值
类内获取对象属性: self.属性
"""
# 1.定义类
class Student():
    # 定义学习方法
    # self代表调用该方法的对象自己  self == stu
    def study(self):
        # 3.给stu对象添加属性
        self.name = '斌子'
        self.age = 18
        # 4.获取stu对象的属性
        print(f'{self.age}岁的{self.name}正在学习...')

# 2.根据类创建对象
stu = Student()
# 3.调用方法
stu.study()


9.魔法方法

知识点:

魔法方法:

1. 方法名格式: _ _方法名_ _()

2. 特殊点: 在一定的时机,自动调用

3. 常见的魔法方法:  
    (1). __init__() 
        执行时机:创建对象时自动调用    
        作用: 初始化对象(给对象的属性赋值)  

    (2).__str__()  
        执行时机:打印对象时调用    
        作用: 打印对象时打印的内容是str返回的字符串,注意必须返回字符串,否则报错

    (3).__del__()  
        执行时机:删除对象时自动调用    
        作用: 一般用于记录对象删除的日志

init魔法方法示例:

# 1.先有类
class Student():
    def __init__(self,xm,nl):
        self.name = xm
        self.age = nl
    # 学习方法
    def study(self):
        print(f'{self.age}岁的{self.name}正在学习...')

# 2.创建对象
# 3.调用方法
stu1 = Student('张三',18)  # 自动执行init方法
stu1.study()

stu2 = Student('李四',28)  # 自动执行init方法
stu2.study()


str魔法方法示例:

# 1.先定义类
class Student():
    # 属性
    def __init__(self,name,age):
        self.name = name
        self.age = age
    # 实例方法:必须手动调用
    def get_str(self):
        return f'姓名:{self.name},年龄:{self.age}'

    # str魔法方法: 打印对象名的时候,自动调用
    def __str__(self):
        return f'姓名:{self.name},年龄:{self.age}'
# 2.创建对象
stu = Student('张三',18)
# 3.需求:打印对象的信息 姓名和年龄
print(stu)

del魔法方法示例:

# 1.先定义类
class Student():

    def __init__(self, name, age):
        # 属性
        self.name = name
        self.age = age

    # del魔法方法: 删除对象时自动调用
    # 删除对象: 默认程序结束时自动删除对象  或者  提前del手动删除
    def __del__(self):
        print('对象被删除了...')


# 2.创建对象
stu = Student('张三', 18)
# 3.手动删除对象
del stu

print('程序的最后一行代码....')


10.定义类的3种方式

知识点:

在python3.x版本之前:  旧式类  想要变成新式类必须手动继承object

python3.x版本之后:  新式类: 默认都继承了object类

也就是3以后,为了更省略,继承object都不用你写了.甚至连括号都不用写

示例:

# 定义类方式1:
class Person1(object):
    def show(self):
        print('我是person1')


# 定义类方式2  相当于省略了object
class Person2():
    def show(self):
        print('我是person2')


# 定义类方式2   连括号都省略了
class Person3:
    def show(self):
        print('我是person3')



标签:stu,对象,self,基础,面向对象,print,方法,属性
From: https://www.cnblogs.com/nanguyhz/p/16800101.html

相关文章

  • 7_面向对象高级
    1.单继承知识点:单继承:一个类继承一个父类1.单继承格式calss子类名(父类名):pass 2.注意:一个父类可以有多个子类示例:#1.定义父类classPe......
  • Rust编程基础
    Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似,但是设计者想要在保证性能的同时提供更好的内......
  • JavaWeb(一):MySql基础
    目录​​1、数据库相关概念​​​​1.1数据库​​​​1.2数据库管理系统​​​​1.3常见的数据库管理系统​​​​1.4SQL​​​​2、MySQL​​​​2.1MySQL安装​​​......
  • python基础之生成器
    异常处理语法结构异常处理实战应用生成器对象生成器对象实现range方法生成器表达式生成器笔试题模块简介今日内容详细异常常见类型SyntanxError语法错误Nam......
  • 进入python的世界_day16_python基础——异常捕获的处理、生成器对象、生成器表达式
    一、异常捕获1.错误类型语法错误>>>syntaxerror名字错误>>>namerror索引错误>>>Indexerror缩进错误>>>indentationerror等等......2.异常处理语法结构1.语法结......
  • C语言零基础入门—函数-习题
    C语言零基础入门—函数-习题本节课的任务是:完成5道习题。下边的题目,都需要使用函数的知识来求解(也就是编写自定义函数求解)01-二元一次函数求解求方程​​ax^2+bx+c=......
  • python基础之异常处理、生成器对象、生成器表达式
    A-Z65-90a-z97-122迭代取值=for循环取值(每次取值都依赖于上一次取值)python基础之异常处理、生成器对象、生成器表达式目录一、异常处理语法结构1.异常的常见类型2......
  • Java基础(八)| 常用API与StringBuilder详解
    ⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开......
  • 夯实基础之内存回收
    内核在给应用程序分配物理内存的时候,如果空闲物理内存不够,那么就会进行内存回收的工作,主要有两种方式:后台内存回收:在物理内存紧张的时候,会唤醒kswapd内核线程来回收内存......
  • 完成基础实验【硬件课程设计】
    完成基础实验【硬件课程设计】​​前言​​​​推荐​​​​完成基础实验​​​​最后​​前言第一周周二:学生小组完成基础实验2022/8/30仅供学习交流使用​请您阅读文章......