类中属性和方法 | Python从入门到精通:高阶篇之三十四

简介: 本节重点介绍了类属性、实例属性、类方法、实例方法、静态方法这些的用法以及区别。除实例方法外,其余都可以通过类和实例对象获取到。

多态简介 | Python从入门到精通:高阶篇之三十三

类中的属性和方法

我们先来定义一个类:
类属性

class A(object):

    count = 0
print(A.count) 

执行结果:

image.png

修改代码:

# a.count = 10
A.count = 100
print('A ,',A.count) 
print('a ,',a.count) 

执行结果:

image.png
image.png

此时count = 0是类属性,直接在类中定义的属性是类属性,类属性可以通过类或类的实例访问到,但是类属性只能通过类对象A.count = 100来修改,无法通过实例对象a.count = 10修改。
实例属性
a.count = 10是实例属性,通过实例对象添加的属性属于实例属性。

    def __init__(self):
        self.name = '孙悟空'

print('a ,',a.name) 
print('A ,',A.name) 

执行结果:

image.png
image.png

self.name = '孙悟空'是实例属性,通过实例对象添加的属性属于实例属性。实例属性只能通过实例对象来访问和修改,类对象无法访问修改。
实例方法

    def test(self):
        print('这是test方法~~~ ', self) 

a = A()
a.test()

执行结果:

image.png
image.png

在类中定义,以self为第一个参数的方法都是实例方法。实例方法在调用时,Python会将调用对象作为self传入。
实例方法可以通过实例和类去调用

  • 当通过实例调用时,会自动将当前调用对象作为self传入
  • 当通过类调用时,不会自动传递self,此时我们必须手动传递self
# A.test()
A.test(a)

执行结果:

image.pngimage.png

a.test()等价于A.test(a)
类方法
在类内部使用 @classmethod 来修饰的方法属于类方法

    @classmethod
    def test_2(cls):
        print('这是test_2方法,他是一个类方法~~~ ',cls)

a = A()
A.test_2()        

执行结果:

image.png

类方法的第一个参数是cls,也会被自动传递,cls就是当前的类对象。
类方法和实例方法的区别,实例方法的第一个参数是self,而类方法的第一个参数是cls。

        print(cls.count)

执行结果:

image.png

类方法可以通过类去调用,也可以通过实例调用,没有区别。

a.test_2()

执行结果:

image.png

A.test_2() 等价于 a.test_2()
静态方法
在类中使用 @staticmethod 来修饰的方法属于静态方法 。

    @staticmethod
    def test_3():
        print('test_3执行了~~~')

a = A()

A.test_3()
a.test_3()

执行结果:

image.png

静态方法不需要指定任何的默认参数,静态方法可以通过类和实例去调用 。
静态方法,基本上是一个和当前类无关的方法,它只是一个保存到当前类中的函数。静态方法一般都是一些工具方法,和当前类无关。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
15天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
124 1
|
2月前
|
API 数据安全/隐私保护 开发者
Python自定义异常:从入门到实践的轻松指南
在Python开发中,自定义异常能提升错误处理的精准度与代码可维护性。本文通过银行系统、电商库存等实例,详解如何创建和使用自定义异常,涵盖异常基础、进阶技巧、最佳实践与真实场景应用,助你写出更专业、易调试的代码。
105 0
|
20天前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
94 5
|
9天前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
1月前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。
|
1月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
75 0
|
1月前
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
44 0
|
2月前
|
数据挖掘 数据处理 C++
Python Lambda:从入门到实战的轻量级函数指南
本文通过10个典型场景,详解Python中Lambda匿名函数的用法。Lambda适用于数据处理、排序、条件筛选、事件绑定等简洁逻辑,能提升代码简洁性和开发效率。同时提醒避免在复杂逻辑中过度使用。掌握Lambda,助你写出更高效的Python代码。
124 0
|
2月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
196 0

热门文章

最新文章

推荐镜像

更多