类可以有类属性,也可以有类方法,类方法主要是对类属性的封装。是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以'cls'作为第一个参数的名字,就最好用'cls'了),能够通过实例对象和类对象去访问。

类方法:

class People(object):

#类属性

__country = 'china'

def __init__(self):

self.name = "Edward"

#类方法,用classmethod来进行修饰

@classmethod

def getCountry(cls):

return cls.__country

# 类方法,用classmethod来进行修饰

@classmethod

def setCountry(cls,country):

cls.__country = country

#类方法不可使用实例属性

#类方法只能访问类属性

#@classmethod

#def showPerson(cls):

#    print(name)

p = People()

print(p.getCountry())    #可以用过实例对象引用

print(People.getCountry())    #可以通过类对象引用

print("----------------")

p.setCountry("USA")

print(p.getCountry())    #可以用过实例对象引用

print(People.getCountry())    #可以通过类对象引用

#p.showPerson()

静态方法:

需要通过修饰器@staticmethod来进行修饰,静态方法不需要多定义参数.

class People(object):

country = 'china'

@staticmethod

#静态方法

def getCountry():

return People.country

#静态方法不可访问实例属性

#静态方法可以访问类属性

#通过对象可以访问静态方法

#通过类也可访问静态方法

print(People.getCountry())

person = People()

print(person.getCountry())

总结:

  • 从类方法和实例方法以及静态方法的定义形式就可以看出来,类方法的第一个参数是类对象cls,那么通过cls引用的必定是类对象的属性和方法;
  • 而实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高;
  • 静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用.

python中的类方法和静态方法相关推荐

  1. python中类方法与实例方法的区别-Python实例方法、类方法、静态方法的区别与作用详解...

    本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...

  2. python的用途实例-Python实例方法、类方法、静态方法的区别与作用详解

    本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...

  3. python实例方法、类方法、静态方法的区别_Python 实例方法、类方法、静态方法的区别与作用...

    Python 实例方法.类方法.静态方法的区别与作用 一.总结 一句话总结: 实例方法:第一个参数必须是实例对象,该参数名一般约定为"self",通过它来传递实例的属性和方法(也可 ...

  4. python中静态变量和静态方法_【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)...

    在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义 ...

  5. python的类方法可以用对象和类名来调用吗_怎么调用python中的类方法

    python中的类用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用. 类方法 ...

  6. Python 实例方法、类方法、静态方法的区别与作用

    Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义 ...

  7. 针对Python 实例方法、类方法和静态方法的详解

    1. 概览 先定义一个最简单的 Python 3 的类: class MyClass:def method(self):print('我是实例方法', self)@classmethoddef cla ...

  8. Python 实例方法、类方法和静态方法

    在 Python 中,实例方法(instance method),类方法(class method)与静态方法(static method)经常容易混淆.本文通过代码例子来说明它们的区别. 实例方法 ...

  9. Python中定义类方法

    方法也分实例方法和类方法, 与属性类似 在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身. 在class中定义类方法,需要这么写: class Person(object) ...

最新文章

  1. Vector 把一个vector追加到另一个vector
  2. Unity3d Fast Indirect illumination Using Two Virtual Spherical Gaussian Lights-Square Enix论文
  3. 为什么要使用Vuex?
  4. [转] boost库的Singleton的实现以及static成员的初始化问题
  5. flask Flash消息
  6. windows上安装Metasploit Framework 4.0
  7. 开机自检BIOS语言详解
  8. iOS开发下载文件速度计算
  9. python求函数零点,在函数零点问题中求解参数范围
  10. ios 融云 重写对话列表_iOS开发融云即时通讯集成详细步骤
  11. Python图像处理一:图像的读取、显示与存储
  12. 现网必用的主备冗余技术,VRRP理论+配置
  13. Nagios③:文件初探
  14. Resilio Sync 无法获取追踪器列表 解决方法
  15. 产品设计指南:如何从零设计一款手机端产品(APP)?
  16. 2023年,“新一代”固定资产管理平台——支持低代码平台
  17. 苹果 macOS 12.4 正式版发布
  18. 痞子衡嵌入式:恩智浦SDK驱动代码风格、模板、检查工具
  19. python爬取小说章节_python之如何爬取一篇小说的第一章内容
  20. 交换机的基本配置实验报告

热门文章

  1. [Swift]loadNibNamed方法
  2. 反射,System.Type类
  3. 关于malloc与字符指针的一些易错点
  4. 从入门到深入Fiddler 2 (二)
  5. 记一次解决问题的掉坑过程
  6. 代码优化导致的奇葩问题
  7. android 4.2修改设置菜单的背景颜色
  8. html5 网络断开,html5 – websocket不断断开连接
  9. java 数组正则表达式_java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】...
  10. 海量url mysql_海量数据mysql优化步骤