python中的类和对象

简介: 类(class):多个类似事物组成的群体统称,能够帮我们快速理解和判断事物的性质。对象(object):类的具体化 Python中一切皆对象,创建对象称为类的实例化

Python类和对象

一、两大编程思想

1.面向过程

面向过程:事物比较简单,可以用线性思维取解决( 宏观上

2.面向对象

面向对象:事物比较复杂,使用简单线性思维无法解决( 细节上

共同点:面向过程和面向对象都是解决实际问题的一种思维方式

二者相辅相成,并不是独立的,解决复杂问题,通过面向对象便于我们从宏观上把握事物之间复杂关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程来处理

二、类和对象

1.类

类(class):多个类似事物组成的群体统称,能够帮我们快速理解和判断事物的性质。

数据类型:
1.不同数据类型属于不同的类
2.使用内置函数type查看数据类型

2.对象

对象(object):类的具体化 Python中一切皆对象,创建对象称为类的实例化

3.类的创建

创建类的语法:

class 类名:
    pass

类的组成:

  1. 类属性 类中方法外的变量,被该类的所有对象所共享
  2. 实例方法 方法必须有第一个形参,通常叫做self
  3. 静态方法 使用@staticmethod修饰,使用类名直接访问的方法
  4. 类方法 使用@calassmethod修饰,使用类名直接访问的方法

类的创建:

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 21:24

# 类的创建
class Student:  # Student 类名 由一个或多个单词组成,每个单词首字母大写,其余字母小写  Student称为类对象
    native_pace = '天津'  # 类属性
    name = '李华'  # 直接写在类里的变量(类中方法外的变量),称为 类属性:类中方法外的变量,被该类的所有对象所共享
    age = 30  # 类属性

    def __init__(self, name, age):  # 初始化方法方法
        self.name = name  # self.name 称为实例属性,进行了一次赋值操作,将局部变量name的值赋给实例属性
        self.age = age

    def eat(self):  # 实例方法  方法必须有第一个形参,通常叫做 'self'
        print('学生在吃饭')

    @staticmethod  # 静态方法
    def se():  # 在静态方法中不能写 self
        print('静态方法')

    @classmethod  # 类方法
    def cm(cls):
        print('类方法')

# Python中一切皆对象,类Student也是对象
print(id(Student))  # 有内存空间
print(type(Student))  # 类型
print(Student)  # 值

在这里插入图片描述

4.对象的创建

对象的创建又称类的实例化
意义:有了实例 就可以调用类中的内容

语法:

实例名(对象名) = 类名()
# 创建对象
stu1 = Student('张三', 20)  # # 创建Student类的对象  stu1叫做实例对象
# 对象三要素
print(id(stu1))  # id标识
print(type(stu1))  # type类型
print(stu1)  # value值

5.方法调用

类属性,类方法,静态方法都是使用 类名.方法名调用
实例方法采用 对象名.方法名调用
# 调用方法
stu1.eat()  # 对象名.方法名  调用Student类中的eat方法
print(stu1.name)
print(stu1.age)
stu1.eat()  # 对象名.方法()   stu1-->实际上就是方法定义处的self  调用Student类中的eat方法

print('----------类属性的使用方式----------')
print(Student.name)
stu2 = Student('张三', 20)
stu3 = Student('李四', 20)
print(Student.native_pace)
Student.native_pace = '吉林'
print(stu2.native_pace)
print(stu3.native_pace)
print(stu2.name, stu2.age)
print(stu3.name, stu3.age)

print('----------类方法的使用方式----------')
Student.cm()

print('----------静态方法的使用方式----------')
Student.se()

在这里插入图片描述

6.为对象动态绑定属性和方法

动态绑定属性: 对象名.属性 = "值"
动态绑定方法: 对象名.方法名 = 方法名
# -*- coding: utf-8 -*-
# @File  : 动态绑定属性和方法.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 22:25


class Student:
    def __init__(self, name, age):  # 初始化方法
        self.name = name  # 将局部变量 name的值赋给实例属性self.name,为所有对象所共享
        self.age = age  # 局部变量 age的值赋给实例属性self.age

    def eat(self):  # 实例方法
        print("{}在吃饭".format(self.name))


# 创建对象
stu1 = Student('张三', 18)
stu2 = Student('李四', 20)

print(id(stu1))  # 2502200745408
print(id(stu2))  # 2502201262576

print("------------为对象stu1动态绑定性别属性----------")
stu1.gender = '女'
print(stu1.name, stu1.age, stu1.gender)  #张三 18 女
print(stu2.name, stu2.age)  # 李四 20

stu1.eat()
stu2.eat()


def fun():  # 在类外面定义函数fun
    print('定义在类外的称为函数')


print("-----------为stu1动态绑定方法-----------")
stu1.fun = fun
stu1.fun()
# stu2.fun()

在这里插入图片描述

相关文章
|
9天前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
47 4
|
1月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
163 3
|
1月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
73 0
|
5月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
277 15
|
5月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
199 5
|
5月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
123 11
|
8月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
352 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
6月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
112 1
|
9月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
195 2
|
9月前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
208 3

推荐镜像

更多