Python面向对象编程01:入门类和对象

简介: 正式的Python专栏第36篇,同学站住,别错过这个从0开始的文章!

前面写了文件的读取和文件处理等其他函数,里面用到了os库。


本来想分享os库,发现这个库可能对于初学者来说比较难,所以后面再等合适的时间谈谈,因为涉及了很多文件系统的操作,比较偏Linux运维。


我们先看看面向对象编程吧,就是很多人口中谈到的OOP(Object-oriented Programming)


什么是面向对象编程?

我们是不是听过面向过程,拿来放在一起对比就比较好理解了。


简单来理解,面向过程就是一切用函数解决一切文件,简单粗暴!


面向对象是面向过程编程之后才出现了,没有面向对象编程很多程序还不是照样开发。


面向对象,也使用函数,但是多了一个网,这个网把一个或者多个函数,和数据关联在一起,然后称为一类事物,也就是程序中的‘类’(class)


定义类,从具体代码来感受吧!

面向对象编程,首先提出的第一个概念就是‘class’,类:


#这就是一个class的定义代码:
class hello_class():
    pass

然后通过class_name() 这样调用来生产对象。

代码稍微升级一下,我们看看:

class hello_class():
    pass
#输出类信息
print(hello_class)
print(type(hello_class))
#创建类的实例对象
print(hello_class())
print(type(hello_class()))

稍微补充一下:

print函数输出类对象的结果:通常是<'class全名‘ object at id序列号>

下面是运行结果:

image.png

这里我们加入新知识点:类实例对象 , 通常直接说,实例。


实例是class产生的对象,所有某个hello_class对象的类型(通过type函数获取)都必定是hello_class。


多个类和对象的观察

看完一个类,我们再看看两个类的对比,结果也是一致的。


下面是两个类的定义和生成对象的代码展示:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello
class student(object):
    “”“学委补充一下:__init___ 函数为类的初始化函数,在创建类对象实例的时候这个函数会被调用。”“”
    def __init__(self):
        print("hello, I am student")
class programmer(object):
    def __init__(self):
        print("hello, I am programmer")
class student(object):
    def __init__(self):
        print("hello, I am student")
class programmer(object):
    def __init__(self):
        print("hello, I am programmer")
s1 = student
print(s1)
p1 = programmer
print(p1)
s11 = student
print(s11)
p11 = programmer
print(p11)
print("*" * 16)
# 创建对象
s2 = student()
print(s2)
p2 = programmer()
print(p2)
# 创建对象
s3 = student()
print(s3)
p3 = programmer()
print(p3)

稍微解释一下:


s1 和 p1 这两个变量打印输出结果是‘class’类型的。

s11 和 p11 这两个变量打印输出结果是‘class’类型的,但是s1跟s11,p1跟p11 是不变的。

s2 和 p2 这两个变量打印输出结果是’object’类型的。

s3 和 p3 这两个变量打印输出结果是’object’类型的。\


下面是运行结果:


image.png

初始化函数被调用了打印了对象信息。


到这里,大家应该都能知道class和object区别了吧


类: 描述了函数和属性的固定关系

(类实例)对象: 基于这种固定关系的一个活生生的个体,它的id是变化的。


补充一下类的属性(数据部分)

学委定义了一个student类,并创建了两个学生对象。


直接复制运行下面的代码:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello
class student(object):
    def __init__(self, name):
        self.name = name
    def get_name(self):
        return self.name
    def set_name(self, name):
        self.name = name
    def study(self):
        print(f"{self.name} : 好好学习,天天向上!")
s1= student("小白")
print(s1)
print(s1.get_name())
print(s1.study())
s2 = student("学委的学生粉丝:哈哈哈")
print(s2)
print(s2.get_name())
print(s2.study())

我们看到他们的id总是不同的(运行几次看看)。

然后每个学生都有一个name属性(携带姓名数据),和三个函数属性(分别用来获取姓名,改名,学习)。

然后我们调用了每个学生的study函数,输出了各自的学习状态。

image.png

总结

Python语言的简约设计,使得面向对象编程非常简单,轻松就定义和和获取对象了。

上面的代码非常简单,但是可以很好的感受到类和对象的呈现,多练习。

目录
相关文章
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
10天前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
20 2
|
16天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
1月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
33 2
|
1月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
1月前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
44 7
|
19天前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
1月前
|
开发者 Python
Python中的装饰器:从入门到实践
本文将深入探讨Python的装饰器,这一强大工具允许开发者在不修改现有函数代码的情况下增加额外的功能。我们将通过实例学习如何创建和应用装饰器,并探索它们背后的原理和高级用法。
49 5
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
88 3
|
1月前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
55 3