python中实现静态方法和类方法都是依赖于python的修饰器来实现的。 对象方法有self参数,类方法有cls参数,静态方法是不需要这些附加参数的。

1、我们已经讨论了类/对象可以拥有像函数一样的方法,这些对象方法与函数的区别只是一个额外的self变量# -*- coding:utf-8 -*-

#!/usr/bin/python

# Filename: method.py

class Person:

grade=1

def __init__(self,name):

self.name = name        def sayHi(self):#加self区别于普通函数

print 'Hello, your name is?',self.name        @staticmethod #声明静态,去掉则编译报错;还有静态方法不能访问类变量和实例变量

def sayName():#使用了静态方法,则不能再使用self

print "my name is king"#,grade,#self.name

@classmethod #类方法

def classMethod(cls):

print("class method")

p = Person("king")

p.sayHi()

p.sayName()

p.classMethod()    Person.classMethod()

输出:    Hello, your name is? king

my name is king    class method

class method

2、静态方法

要在类中使用静态方法,需在类成员函数前面加上@staticmethod标记符,以表示下面的成员函数是静态函数。使用静态方法的好处是,不需要定义实例即可使用这个方法。另外,多个实例共享此静态方法。

3、 类方法

类方法与普通的成员函数和静态函数有不同之处,在接触的语言中好像也没见过这种语义,看它的定义:

一个类方法就可以通过类或它的实例来调用的方法, 不管你是用类来调用这个方法还是类实例调用这个方法,该方法的第一个参数总是定义该方法的类对象。

记住:方法的第一个参数都是类对象而不是实例对象.

按照惯例,类方法的第一个形参被命名为 cls.任何时候定义类方法都不是必须的(类方法能实现的功能都可以通过定义一个普通函数来实现,只要这个函数接受一个类对象做为参数就可以了).

python的对象和方法_python--类方法、对象方法、静态方法相关推荐

  1. python查看类的属性和方法_Python 获取对象的属性和方法—dir 函数

    工作中,我们使用一些之前没用到过的模块,使用时需要了解一下这个模块中的一些类的方法或属性,怎么做呢?目前我比较常用的两款IDE"Pycharm"和"VSCode" ...

  2. python对象特性教学_Python三个面向对象特性多态性的实用解释,实践,解读,丨,三大,特征,之...

    摘要: 多态从字面意思上看就是多种形态,在我们python的面向对象里就是不同的对象在接收相同方法或者函数时会产生不同的行为,也就是说,每个对象可以用自己的方式去响应共同的函数,不同的方式实现不同的结 ...

  3. python中对象的特性_python面对对象-三大特性

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到一个对象中. 把固定功能的代码封装到一个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

  4. python对象底层原理_Python字符串对象实现原理详解

    在Python世界中将对象分为两种:一种是定长对象,比如整数,整数对象定义的时候就能确定它所占用的内存空间大小,另一种是变长对象,在对象定义时并不知道是多少,比如:str,list, set, dic ...

  5. python保存类对象到文件_python存储对象到文件

    1.pickle包 (1).将内存中的对象转换成为文本流: import pickle # define class class Bird(object): have_feather = True w ...

  6. python中getattr详解_Python类中方法getitem和getattr详解

    请分享高手帮小编详解一下Python中的getattr内置函数没明白这个内置函数得意思.麻烦帮小编讲解一下. 其实这个方法最主要的作用是实现反射机制.也就是说可以通过字符串获取方法实例.这样,你就可以 ...

  7. python插件开发怎么扩展主程序_python扩展实现方法--python与c混和编程

    前言(更新:更方便易用的方式在http://www.swig.org/tutorial.html) 大部分的Python的扩展都是用C语言写的,但也很容易移植到C++中. 一般来说,所有能被整合或者导 ...

  8. python中 普通方法_python中普通方法classmethod和staticmethod的区别与用法

    class Foo(object): #实例方法,第一个承诺书必须是实例对象,一般习惯用self. def ins_m(self): print("是类{}的实例方法,只能被实例调用&quo ...

  9. 查看python所有内置方法_python 内置方法

    abs(x)     #x的绝对值 all(x)   #x列表或可迭代数据全部为真才为真,注非0即为真 any(x)     #x列表或可迭代数据有一个为真即为真 ascii(x) #和repr()一 ...

  10. python 实例化方法_Python中__new__()方法的使用和实例化

    new()是在新式类中新出现的方法,它作用在构造方法init()建造实例之前,可以这么理解,在Python 中存在于类里面的构造方法init()负责将类的实例化,而在init()调用之前,new()决 ...

最新文章

  1. Directx11教程(6) 画一个简单的三角形(2)
  2. python中的np where_numpy中的np.where
  3. 报告解读丨细数万亿企服市场发展史,揭秘行业发展新趋势
  4. 【Matlab】你想知道在图表标题中显示变量的一切
  5. LeetCode 651. 4键键盘(DP,Ctrl+CV)
  6. 技术要求→物理安全→防盗窃和防破坏
  7. EntityFramework 如何查看执行的 SQL 代码?
  8. 数据挖掘:数据预处理相关概念
  9. 西安电子科技大学计算机科学与技术就业,西安电子科技大学:除了计算机和通信工程,这些专业高考也很热门,毕业照样拿高薪...
  10. thinkpad E40 的 C1门
  11. Java中Switch-Case用法小结
  12. win7副本不是正版_为什么有人愿意放弃win10,重装成盗版的win7呢原因有三点!...
  13. 电脑白屏,电脑白屏是怎么回事?是系统的原因还是
  14. 微信小程序picker默认请选择
  15. html怎么打入文本框,html怎么在文本框里面输入文字
  16. linux怎么找宝塔地址,宝塔Linux面板安全入口地址忘了(方法一)
  17. 2020Android面经,历时一个半月,斩获3个大厂offer
  18. javaweb代码编译打包上架流程简易说明
  19. php 导出excel分段导出_php 导出excel 10万数据
  20. 关于惠普无线网卡驱动报警无法连接网络解决办法

热门文章

  1. 当桌面的快捷方式图标左下角出现一个X(叉)的时候应该怎么去掉
  2. 使用Dapper处理多个结果集和多重映射的教程
  3. c# 类属性和方法
  4. 相对URL拼接为绝对URL的过程
  5. [.NET] : 设定Windows Service启动类型
  6. 第三十五 ASP.NET和Web服务(二)
  7. linux系统中清空文件内容的三种方法
  8. Zabbix 结合 bat 脚本与计划任务开启 windows 远程桌面
  9. 玩转 Numpy 的精选习题
  10. nginx启动报错 :./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object fi