python中类的各种方法

Python类调用实例方法 前面讲过,在 Python 的类体中定义的方法默认都是实例方法,也示范了通过对象来调用实例方法。 但要提醒大家的是,Python 的类在很大程度上是一个命名空间,当程序在类体中定义变量、方法时,与前面介绍的定义变量、定义函数其实并没有太大的不同。对比如下代码: # 定义全局空间的foo函数 def foo (): print("全局空间的foo方法") # 全局空间的... 阅读详情

python里,对于类的各种方法也有着自己的定义。和java类似,有静态方法,实例方法。但是不同于java的是,它有一个特殊的方法,叫类方法。

前面讲过了,静态方法和java中的概念一致,直接使用类名.静态方法名去调用,在python中要由装饰器@staticmethod来注明。

1. 类方法及其使用

类方法是由装饰器@classmethod来注明的方法,它的使用需要遵守一定的规则:

  • 类方法内部可以直接访问类属性、实例方法、类方法,但无法访问实例属性
  • 调用其他类方法时,不用传递cls参数;但调用其他实例方法时,要传递cls参数
  • 在类方法内部调用的实例方法,接收的是一个类对象而不是实例对象,当实例方法绑定实例属性时,在实例方法打印的仍然是类属性;表明类方法无法访问实例属性
  • 一个类只有一个类对象,即使通过实例对象调用类方法,传递的仍然是类对象的引用,所有类方法都被同一个类对象引用
class Employee:
    name = ''
    age = 24
  

    def __init__(self,name,age):
        self.name = name
        self.age = age

    @classmethod
    def work(cls, h, e, t)
        print(f"{cls.name} is age {cls.age} works {h} hours a day.")
        cls.work_overtime(e)  # 类方法中调用类方法,传参不需要加cls
        cls.sign_in(cls, t)  # 类方法中调用实例方法,传参要加cls

    @classmethod
    def work_overtime(cls, e)
        print(f"{cls.name} works overtime {e} hours.")

    def sign_in(self, t):
        print(f"{self.name} signs in at {t}.")

    
if __name__ == '__main__':
    e = Employee('yangyang', 28)
    e.work(8, 2, '9:00')
    

对于类方法,内部调用类方法,传参不需要加cls, 但如果调用实例方法,传参得加cls。不管是调用类方法还是实例方法,都得用cls去调用。

2. 如果方法内部既需要访问实例属性,又需要访问类属性,应该定义成什么方法?

答:实例方法,因为实例方法可以通过类名.属性名访问类属性,而类方法无法访问实例属性

class Person:
     name = "cool man"

     def self_m(self):
         Person.name = "yup"  # 修改类属性
         print(self.name)   # 打印实例属性


p = Person()
p.name = "bad man"
p.self_m()  
Person.self_m(Person) # 

运行结果

由上可得知,类也可以调用实例方法,传参类,则调用类的属性,打印出来的是类的属性。

Python类的方法 Python类的方法主要分为实例方法、类方法和静态方法三种。 阅读详情

相关推荐

vuecli3 实现 移动端和pc端 界面切换(两套代码)

适合场景 多页面多系统应用 所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。 产品需求:一套代码 兼容pc端和移动端 , 移动端和pc端的样式布局差别很大,需要使用多界面,并判断使用手机的时候跳转移动端代码,使用pc端跳转pc端代码。 项目目录 分为两部分代码,pc 和mobile 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: <!DOCTYP

你怎么也喜欢嘴巴嘟嘟 5920

python中类与方法_python中的类与方法

1. 类在Python 中,面向对象编程主要有两个主题,就是类和类实例。类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息。首先,python中有两种风格的类:新式类和经典类。新式类和经典类声明的最大不同在于,所有新式类必须继承至少一个父类,参数bases可以是一个(单继承)或多个(多重继承)用于继承的父类。推荐尽可能使用新式类。class MyNewO...

weixin_39984982的博客 532

手把手教你用mitmproxy抓包抖音数据流(附Python脚本模板)

本文详细介绍了如何使用mitmproxy抓包抖音数据流,包括环境搭建、证书安装和Python脚本模板。从mitmproxy配置到抖音API解析,提供完整的移动端数据流分析方案,帮助开发者快速掌握数据抓取技术,适用于应用优化、竞品分析和安全审计等场景。

weixin_33670786的博客 308

python类及其方法_Python类和方法

类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。类是一个模板,它描述一类对象的状态和行为,把这个模板实现以后,就是一个对象类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。方法重写:如果从父类继承的方法不...

weixin_39943750的博客 274

电机控制-PMSM无感FOC控制(四)SVPWM——过调制

上一章我们提到了SVPWM矢量合成的范围在一个平面的矢量圆内,那么当电压矢量超出调制范围时,该怎么做呢?这就是过调制要解决的问题。电机控制-PMSM无感foc控制(三)SVPWM据之前讲解的内容我们可以知道,SVPWM技术在电压空间上模拟了一个近似于圆的电压轨迹,减小了相电流的谐波,降低了电机的谐波损耗,抑制了转矩脉动。然而,SVPWM技术也存在一些问题,合成电压矢量有极限便是其中之一。这个半径为√3/3Vdc的区域也被称作SVPWM的线性区域。

zhuxinmingde的博客 1315

Qt上位机实战:5步搞定STM32 IAP固件升级(附拖拽文件处理技巧)

本文详细介绍了如何使用Qt开发STM32 IAP固件升级上位机。通过五个核心步骤,包括理解IAP机制、搭建Qt环境、实现拖拽文件加载、封装串口通信以及设计可靠通信协议,帮助开发者快速构建一个稳定、易用且支持图形化操作的固件升级工具,显著提升嵌入式产品开发与维护效率。

ss78901的博客 1081

python的包、类、方法

包Python 包(Package)是 Python 中一种用于组织模块(Module)的方式,它允许开发人员将相关的模块集合到一起,并通过一个统一的命名空间进行管理。包本质上是一个包含 __init__.py 文件(在 Python 3.3 版本之后,这个文件可以为空,但在旧版本中需要存在以标识目录为包)的目录结构。以下是对 Python 包的核心要点概述:包结构:包通常由多个模块和子包组成。例如,你可能有一个名为 mypackage 的包,其中包含多个模块(.py 文件)以及一些子目录,每个子目录也是一

qq_48811377的博客 1452

090、Sensor上电时序与帧同步的驱动级实现——以索尼IMX766为例的AVDD/DVDD/IOVDD时序调优

摘要: 本文以索尼IMX766传感器为例,深入探讨了传感器上电时序与帧同步的驱动级实现问题。通过分析某车载项目量产中的高温黑屏故障,揭示了AVDD/DVDD/IOVDD时序偏差导致传感器内部状态机异常的根源。文章详细解读了IMX766三路电源的时序约束(如AVDD与DVDD需在1ms内同步至90%),并提供了驱动代码级实现方案,包括电源使能顺序、延时控制及帧同步配置。针对多摄同步场景,强调了曝光时间寄存器写入一致性的重要性。最后结合产线问题定位经验,提出通过示波器抓取电源波形验证时序合规性的方法。全文聚焦硬

zzfmlxs的博客 259

python类的方法_Python类和方法

类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。类是一个模板,它描述一类对象的状态和行为,把这个模板实现以后,就是一个对象类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。方法重写:如果从父类继承的方法不...

weixin_39713219的博客 156

Oracle EBS 寄销/VMI(1)-->基础设置

名词解释:     BPA:一揽子采购协议     BPR:一揽子发放     SR:来源补充规则     ASL:合格供应商列表     VMI: 供应商管理库存     寄售(Consignment)是把货物放在客户那里,客户要用的时候才付款的库存,一般是指卖方把

陈显平的专栏-Oracle EBS 1万+

鸿蒙应用发布实战:应用热更新的实现

在移动应用开发领域,应用更新是持续交付价值的关键环节。传统的应用更新方式需要用户手动下载完整安装包,不仅用户体验差,而且更新率往往不理想。热更新技术(也称为OTA更新)允许应用在不重新安装的情况下动态更新部分功能,极大提升了用户体验和迭代效率。本文专注于鸿蒙操作系统下的应用热更新实现方案,涵盖从原理到实践的完整知识体系。鸿蒙热更新的技术架构差分更新算法实现动态部署机制实际项目中的最佳实践安全与性能优化策略首先介绍鸿蒙热更新的背景和核心概念深入分析技术原理和算法实现。

操作系统内核探秘的博客 965

python中类的继承与方法重写_Python类继承,方法重写及私有方法

# -*- coding: utf-8 -*-"""Created on Mon Nov 12 15:05:20 2018@author: zhen"""class Aricraft:mileages = 0.0 # 类变量,在该类及其子类的实例中共享def __init__(self, engine, speed):self.engine = engineself.speed = speedde...

weixin_39826080的博客 664

BLDC&PMSM电机控制器硬件设计工程(八)72V 10kW电机控制器原理图工程及库文件

电机控制器基本需求:接口类型;MCU平台;通信接口;供电;信号采集;信号输出;功率;EMC或者认证需求。

小幽余生不加糖 373

python怎么查看类的方法_python看类里有哪些方法

Python使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:classClassName:'类的帮助信息'#类文档字符串class_suite#类体实例classEmployee:'所有员工的基类'empCount=0def__init__(self,name,salary):self.name=nameself.sala...

weixin_39879219的博客 2550

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python导入模块中类的方法

1、导入模块中的单类 》创建模块 #file:person.py class Person(): def __init__(self): print("I'm a person!") def name(self): print("I need a name!") def age(self): print("I have ...

ISmileLi的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python函数、类和方法

大家好,当涉及到编写可维护、可扩展且易于测试的代码时,Python提供了一些强大的工具和概念,其中包括函数、类和方法。这些是Python编程中的核心要素,可以帮助我们构建高效的测试框架和可靠的测试用例。本文将探讨Python中的函数、类和方法的概念,并介绍它们在测试开发中的重要性和用途。我们将了解它们的基本概念、语法和使用方法,以及如何利用它们来提高代码的可维护性、可测试性和可读性。

若不知道要驶向哪个码头,那么任何风都不会是顺风。 2016

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python类的专有方法_python类专用方法

python类专用方法时间:2010-6-91、获得与设置数据项示例:def __getitem__(self, key): return self.data[key]返回指定KEY的数据项值!>>> f.__getitem__("name")>>> f["name"]示例:class A:def __init__(self,date):self.date = date#传一个字典类型的数据def...

weixin_39978749的博客 417

python中如何调用类的方法

python中如何调用类的方法 类的方法的调用: 与普通的函数调用类似 1、类的内部调用:self.<方法名>(参数列表)。 2、在类的外部调用:<实例名>.<方法名>(参数列表)。 注意:以上两种调用方法中,提供的参数列表中都不用包括self。 演示一个类: class Washer: def __init__(self): self.water = 0 self.scour = 0 def add_water(self

qq_45810826的博客 1万+

python 类调用对象方法_Python类调用实例方法

前面讲过,在 Python 的类体中定义的方法默认都是实例方法,也示范了通过对象来调用实例方法。但要提醒大家的是,Python 的类在很大程度上是一个命名空间,当程序在类体中定义变量、方法时,与前面介绍的定义变量、定义函数其实并没有太大的不同。对比如下代码:# 定义全局空间的foo函数 def foo (): print("全局空间的foo方法") # 全局空间的bar变量 bar...

weixin_39612297的博客 1518

python 中类的初始化方法

在 Python 的类中,有一种特殊的方法——初始化方法。它的格式是def__init__(self):,方法名由init(initialize 的缩写,初始化的意思)加左右两边的双下划线组成。 初始化方法的特殊之处是:每当进行类的实例化时,初始化方法会自动被执行。我们看个例子: class Human: def __init__(self): print('Hi,我是 Human 类的初始化方法') human = Human() # 输出:Hi,我是 Human 类的初始化...

July3S的博客 1万+

python类中方法调用自己类的方法_python 定义类时,实现内部方法的互相调用

python 定义类时,实现内部方法的互相调用更新时间:2019年12月25日 15:34:17 作者:yangnianjinxin今天小编就为大家分享一篇python 定义类时,实现内部方法的互相调用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧每次调用内部的方法时,方法前面加 self.举例:例子参考百度知道里面的回答class MyClass:def __init__(...

weixin_39926191的博客 833

python类中方法调用自己类的方法_python 类中方法总结 --- 实例方法、类方法、静态方法...

在python的类语法中,可以出现三种方法,具体如下:(1)实例方法1)第一个参数必须是实例本身,一般使用【self】表示。2)在实例方法中,可以通过【self】来操作实例属性,【类名】来操作类属性。3)实例方法只能通过实例对象去调用,尽管也可以通过类名间接调用【类名.方法名(self, ...)】,但此时仍然需要传入self对象。(2)类方法1)使用【@classmethod】修饰函数,且第一个...

weixin_39976081的博客 7531

python类及其方法_python的类及其方法

一、python中的类在python中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是”真正的实物”,它存放了类中所定义的对象的具体信息类的优点:1、类对象是多态的:也就是多种形态,这意味着我们可以对不同的类对象使用同样的操作方法,而不需要额外写代码。2、类的封装:封装之后,可以直接调用类的对象,来操作内部的一些类方法,不需要让使用者看到代码工作的...

weixin_39826080的博客 385

Python:类的特殊方法

在Python类中有些方法名、属性名的前后都添加了双下划线,这种方法、属性通常都属于Python的特殊方法和特殊属性,开发者可以通过重写这些这些方法或直接调用这些方法来实现特殊的功能。最常见的特殊方法是前面介绍的构造方法:__init__,开发者可以通过重写类中的__init__方法来实现自己的初始化逻辑。提示:Python是一门尽量简单的语言,它不像某些语言(如Java)需要让类的实现接口,并实现接口中的方法。

2302_79085918的博客 1525

python类的定义_python类中怎么定义方法

Python类所包含的最重要的两个成员就是变量和方法,其中类变量属于类本身,用于定义该类本身所包含的状态数据:而实例变量则属于该类的对象,用于定义对象所包含的状态数据:方法则用于定义该类的对象的行为或功能实现。对于Python类中,方法的定义方式,我们可以归纳有4种类型:推荐学习:Python视频教程)1、不带self、cls参数且不加装饰器(staticmethod、classmethod)定义...

weixin_39720003的博客 155
上一篇: python中对字典的遍历
下一篇: 使用pytest+openpyxl做接口自动化遇到的问题
幸运的星竹
博客等级 码龄11年 190粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值