返回顶部
首页 > 资讯 > 后端开发 > Python >python类名和类方法cls修改类变量的值
  • 962
分享到

python类名和类方法cls修改类变量的值

2024-04-02 19:04:59 962人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

通过类对象是无法修改类变量的值的,本质其实是给类对象新添加 name 和 age 这 2 个实例变量。不会影响类的其它实例化对象,更不会影响同名的类变量。和类变量不同,实例变量只能通

  • 通过类对象是无法修改类变量的值的,本质其实是给类对象新添加 name 和 age 这 2 个实例变量。不会影响类的其它实例化对象,更不会影响同名的类变量。
  • 和类变量不同,实例变量只能通过类对象名访问,无法通过类名访问。
  • 通过cls和类名修改类变量的值,会修改同名的类变量,会影响所有的实例化对象
class Person:
    name='jerry'
    age='20'
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print("构造函数", name, age)
    @claSSMethod
    def A(cls):
        # cls()等价于类Person(),
        # 通过类对象p是无法修改类变量的
        p=cls("Tom", 18)
        print('cls:', cls, p)
        return p
 
    @classmethod
    def B(cls):
        # 类方法cls可以直接调用类变量
        print("B结果:", cls.name, cls.age)
 
    @classmethod
    def C(cls):
        # 类方法cls可以直接调用类变量
        # cls和类名一样可修改类变量的值,会影响所有的实例化对象
        cls.name="曹操"
        cls.age=50
if __name__ == '__main__':
 
    Person.B()
    Person.C()
    print("C方法修改后,类变量的值:", Person.name, Person.age)
    # 可以使用类名直接调用类方法
    person = Person.A()
    print(person.name, person.age)
    print("最终类变量的值:", Person.name, Person.age)
 D:\MC\venv\Scripts\python.exe D:/MC/test01.py

B结果:

jerry 20

C方法修改后,类变量的值: 曹操 50
构造函数 Tom 18

cls: <class '__main__.Person'> <__main__.Person object at 0x000002362F849D00>
Tom 18

最终类变量的值:

曹操 50

Process finished with exit code 0

我对Man这个类进行实例化2次,每个实例的id都不一样。这就依靠类方法来实现了:首先,用@classmethod描述类方法,然后用"cls"代表本类。类方法对类属性进行的处理是有记忆性的。

需要注意的是:类方法处理的变量一定要是类变量。因为在类方法里你用不了self来寻址实例变量,所以需要把类变量放到最前面描述,如上面的"id=0"所示。类变量是可以被self访问的,所以,在类变量定义好了以后,不需要在_init_函数里对类变量再一次描述。所以,上面代码里self.id不一定需要。

对于需要改变类变量的值的同学(每次调用id_number(cls)方法,类变量id的值会改变),可以有效利用这个技巧,来进行模型的加载。比如,把模型封装成一个类,把初始化网络和加载模型用类方法来描述,这样每一次load之后,可以一直实用模型。

class Man:
    id = 0  # 类变量
    def __init__(self, name):
        self.name = name
        self.id = self.id_number()
    @classmethod
    def id_number(cls):
        # 类方法可以改变类属性,对类属性进行的处理是有记忆性的。
        # 类方法处理的变量一定要是类变量。因为在类方法里你用不了self来寻址实例变量,
        # 所以需要把类变量放到最前面描述,如上面的"id=0"所示。
        cls.id += 1
        cls.ww=2
        return cls.id, cls.ww
 
 a = Man('A')
print(a.id)
b = Man('B')
print(b.id)
c=Man.id_number()
print(c)
D:\MC\venv\Scripts\Python.exe D:/MC/test2.py
(1, 2)
(2, 2)
(3, 2)
 Process finished with exit code 0

到此这篇关于python类名和类方法cls修改类变量的值的文章就介绍到这了,更多相关python修改类变量值内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python类名和类方法cls修改类变量的值

本文链接: https://lsjlt.com/news/117470.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python类名和类方法cls修改类变量的值
    通过类对象是无法修改类变量的值的,本质其实是给类对象新添加 name 和 age 这 2 个实例变量。不会影响类的其它实例化对象,更不会影响同名的类变量。和类变量不同,实例变量只能通...
    99+
    2024-04-02
  • python怎么修改类变量的值
    这篇文章主要介绍“python怎么修改类变量的值”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python怎么修改类变量的值”文章能帮助大家解决问题。通过类对象是无法修改类变量的值的,本质其实是给类...
    99+
    2023-06-30
  • Java类变量和类方法实例分析
    本篇内容介绍了“Java类变量和类方法实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.static静态变量静态变量被同一个类的所有...
    99+
    2023-06-30
  • 深入理解python类的实例变量和类变量
    本python是python 3.5版本~!!!class aa:       w = 10       def __init__(self):            self.x = 11            self.y = 12  ...
    99+
    2023-01-31
    变量 实例 python
  • Java超详细讲解类变量和类方法
    目录1.static静态变量2.类变量(静态变量的访问)3.类方法1.static静态变量 1.静态变量被同一个类的所有对象共享 2.static类变量在类加载的时候就生成使用 st...
    99+
    2024-04-02
  • Golang反射获取变量类型和值的方法详解
    目录1. 什么是反射2. reflect.Type2.1 类型Type和种类Kind2.2 引用指向元素的类型2.3 结构体成员类型3. reflect.Value3.1 结构体的成...
    99+
    2022-12-08
    Golang反射获取变量类型 值 Golang反射获取变量类型 Golang反射获取值 Golang反射
  • Python中类变量和实例变量的区别
    目录一、前言二、解决过程三、总结一、前言 有人提问了一个关于Python类变量和实例变量的问题,这里拿出来给大家分享下,一起学习。 是用英文提问的,当然了英文看上去也不难,有点二级...
    99+
    2024-04-02
  • Python变量和数据类型和数据类型的转换
    目录变量什么是变量?print语句格式变量的特征数据类型type()语句type()语句的使用方式1.在print语句中,直接输出类型信息2.用变量存储type()的结果(返回值)3...
    99+
    2024-04-02
  • python类的私有变量
    1.类的私有变量和私有方法 1)_xx 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。若内部变量标示,如:当使用“from Mimport”时,不会将以一个下划线开头的对象引入。 2)__xx...
    99+
    2023-01-31
    变量 python
  • python怎么定义数值类型变量
    这篇文章主要讲解了“python怎么定义数值类型变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么定义数值类型变量”吧!说明Python内置了很多数值类型,其中常用的有int...
    99+
    2023-06-30
  • Python中的变量和数据类型
    python是一门弱数据类型的语言,变量不需要声明即可使用,向变量赋值即定义变量,赋予的值的类型就是变量的类型,但变量也是有数据类型的,字符串'1'如果想参与数据计算,则需要使用int()函数来进行转换,使用type()函数可以查看变量的数...
    99+
    2023-05-14
    Python 编程语言 变量
  • Python类的动态修改的实例方法
    Python类的动态修改的实例方法 相信很多朋友在编程的时候都会想修改一下已经写好的程序行为代码,而最常见的方式就是通过子类来重写父类的一些不满足需求的方法。比如说下面这个例子。 class Dog: ...
    99+
    2022-06-04
    实例 方法 动态
  • win10改变账户类型的方法
    很有可能有些朋友会不得不改变账户的类型,但这种实际操作相对较小,所以很多人不知道如何改变和实际操作,所以我们提供了一个例子教程,看看win10如何改变账户类型。win10改变账户类型的方法:先按键盘快捷键win+r打开操作。以后输入cont...
    99+
    2023-07-10
  • python数据类型和变量的使用方法有哪些
    本篇内容主要讲解“python数据类型和变量的使用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python数据类型和变量的使用方法有哪些”吧!数据类型计算机顾名思义就是可以做数学计算...
    99+
    2023-06-02
  • Python变量和数据类型详解
    Python变量和数据类型 Python中数据类型 Python之print语句 Python的注释 Python中什么是变量 Python中定义字符串 Python中raw字符串...
    99+
    2022-06-04
    变量 详解 数据类型
  • python安装、数据类型和变量
    2018.06.061.1为什么要学习python学习方法:边看边做不能只看不做笔记要记录详细 python是跨平台的语言,linux、windows及mac都可以使用官网:www.python.org学习使用的较新版本,使用python...
    99+
    2023-01-31
    变量 数据类型 python
  • python变量和基本数据类型
    一、变量 1、声明变量: #!/usr/bin/env python# -*- coding: utf-8 -*- name = "tiger" 上述代码声明了一个变量,变量名为: name,变量name的值为:"tiger"变量的作用:其...
    99+
    2023-01-31
    变量 数据类型 python
  • php怎么改变变量的存储类型
    PHP是一门广泛应用于Web开发的编程语言,它的灵活性和可扩展性让开发者们能够轻松地构建各种类型的应用。在PHP中,变量存储类型的选择很重要,因为它在很大程度上影响了代码的性能和可读性。本文将介绍如何在PHP中改变变量存储类型的方法,以及它...
    99+
    2023-05-14
    php
  • php如何改变变量的存储类型
    这篇“php如何改变变量的存储类型”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何改变变量的存储类型”文章吧。基础数...
    99+
    2023-07-05
  • python类变量和成员变量有什么区别
    在Python中,类变量和成员变量是两种不同类型的变量。类变量是在类的定义中声明的变量,它是类的所有实例共享的属性。当类变量的值被修...
    99+
    2023-10-10
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作