1. 类属性

  • 1.1 定义

    • 在类中方法外通过属性名 = 属性值定义的属性
    • 访问方式:
      • 类名.属性名
      • 对象名.属性名
        class Student:
        cls_id = 102 stu = Student()
        print(Student.cls_id)
        print(stu.cls_id) print("---------") Student.cls_id = 103
        print(Student.cls_id)
        print(stu.cls_id) print("---------") stu.cls_id = 104
        print(Student.cls_id)
        print(stu.cls_id)

        运行结果:

        102
        102
        ---------
        103
        103
        ---------
        103
        104
  • 1.2 对象属性与类属性的区别

    • (1)内存中存在数量不同

      • 对象属性:创建了多少个对象,内存中就有多少份
      • 类属性:内存中只存在类中只存在一份,但是对象可读取
    • (2)定义位置不同
      • 对象属性:定义在类内方法内
      • 类属性:定义在类内方法外
    • (3)访问方式不同
      • 对象属性:对象名.属性名
      • 类属性:类名.属性名
        • 读取类属性时,可以通过对象名.属性名
    • (4)生命周期不同
      • 对象属性:创建对象 -> 对象被系统回收
      • 类属性:加载全局命名空间 -> 程序结束
    • (5)所有者不同
      • 对象属性:属于对象
      • 类属性:属于类

2. 静态方法

  • 概念:类中的一个方法
  • 格式:在方法上面添加@staticmethod
  • 参数:可以有参数,也可以没有参数
  • 应用场景:一般用于和类对象以及实例对象无关的代码
  • 使用方式:
    • (1)类名.类方法名
    • (2)对象名.类方法名
  • 使用场景示例:
    • 如:学生管理系统的展示主菜单

3. 类方法

  • 概念:无需实例化就可以通过类直接调用的方法
  • 格式:在方法上面添加@classmethod
  • 参数:方法的第一个参数接收的一定是类本身
    • 方法的参数为cls也可以是其他名称,但是一般默认为cls
    • cls指向类对象(也就是下边示例中Goods)
  • 应用场景:当一个方法中只涉及到静态属性的时候可以使用类方法(类方法用来修改类属性)
  • 使用方式:
    • (1)对象名.类方法名
    • (2)类名.类方法名
  • 使用场景示例:
    • 修改所有商品的折扣

      class Goods():
      discount = 1
      def __init__(self,price,name):
      self.name = name
      self.price = price
      def price_discount(self):
      return self.price * Goods.discount
      @classmethod
      def change_discount(cls,new_discount):
      cls.discount = new_discount goods = Goods(20, "audi")
      print(goods.price_discount())
      Goods.change_discount(0.5)
      print(goods.price_discount())
      运行结果:
      20
      10.0

        

       

python 类属性、静态方法与类方法的更多相关文章

  1. python类的静态方法和类方法区别

    先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. # coding:utf-8 class Foo(object): """类三种方法语法形式&q ...

  2. python类属性 静态方法

      实例 实例就是由对象创建出来的实实在在的存在 创建出来的对象叫做类的实例 创建对象的动作叫做实例化 对象的属性叫做实例的属性 对象调用的方法叫做实例方法   类是一个特殊的对象   类属性 类属性 ...

  3. Python类(六)-静态方法、类方法、属性方法

    静态方法 通过@staticmethod来定义,静态方法在类中,但在静态方法里访问不了类和实例中的属性,但静态方法需要类来调用 # -*- coding:utf-8 -*- __author__ = ...

  4. python类属性和类方法(类的结构、实例属性、静态方法)

    类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两 ...

  5. Python类属性和类方法

    01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两步: 1) 在内存中为对象 分配空间 2) 调用初始化方法 __in ...

  6. python 类属性与方法

    Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...

  7. Python类属性访问的魔法方法

    Python类属性访问的魔法方法: 1. __getattr__(self, name)- 定义当用户试图获取一个不存在的属性时的行为 2. __getattribute__(self, name)- ...

  8. python类属性和对象属性、类的普通方法和静态方法

    类属性和对象属性的定义 class LearnClass(): #类属性 cls_attr = None def __init__(self,arg): #对象属性 self.obj_attr = a ...

  9. python——实例方法、静态方法、类方法、类变量和实例变量浅析

    概述: 实例方法就是类的实例能够使用的方法. 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使用装饰器@staticmethod定义静态方法.类对象和实例都可调用静态 ...

随机推荐

  1. ES6之主要知识点(八)Symbol

    防止属性名的冲突.这就是 ES6 引入Symbol的原因. 它是 JavaScript 语言的第七种数据类型,前六种是:undefined.null.布尔值(Boolean).字符串(String). ...

  2. Markdown 格式标记符号说明

    Markdown 格式标记符号说明 1. 标题 在行首插入 1 到 6个#,分别表示标题 1 到标题 6 # 这是标题1 ## 这是标题1 ###### 这是标题6 点击保存后的效果: 标题1 标题2 ...

  3. sscanf linux-c从一个字符串中读进与指定格式相符的数据

    https://www.cnblogs.com/lanjianhappy/p/6861728.html 函数原型: Int sscanf( string str, string fmt, mixed ...

  4. Luogu P2101 命运石之门的选择(分治+搜索)

    P2101 命运石之门的选择 题意 题目描述 在某一条不知名世界线的冈伦今天突然接到了一条\(dmail\),上面说世界线将会发生巨大变动,未来的他无论如何都无法扭转这种变动回到原来的世界线.而世界线 ...

  5. 转:fork与vfork的区别

    源地址:http://blog.csdn.net/jianchi88/article/details/6985326 有大量驱动文章 fork()与vfock()都是创建一个进程,那他们有什么区别呢? ...

  6. java 异常捕获小记

    java 中异常捕获常用的为: try{ //业务代码 }catch(Exception e){ //异常捕获 }finally{ // 不管有无异常, 最后都会执行到这里 } 在方法体内如果想要把异 ...

  7. Jquery 页面打印

    <script src="~/Scripts/js/dist/jquery.jqprint-0.3.js"></script> <script typ ...

  8. T2483 电梯(模拟题)

    https://www.luogu.org/problem/show?pid=T2483 题目背景 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道. ...

  9. 常见问题:MongoDB基础知识

    常见问题:MongoDB基础知识 ·MongoDB支持哪些平台? ·MongoDB作为托管服务提供吗? ·集合(collection)与表(table)有何不同? ·如何创建数据库(database) ...

  10. LUOGU P1937 [USACO10MAR]仓配置Barn Allocation

    传送门 解题思路 扫了一眼觉得是贪心+线段树,结果贪心的时候刚开始按区间长度排的序..这还有82分,后来叉了自己,换成按右端点排序过了. 代码 #include<iostream> #in ...