class NewsPaper(object):

    # 类属性
__print_times = 0 # 下划线表示私有属性 # 实例方法
def __init__(self, title, content):
self.title = title # 实例属性
self.content = content # 实例属性
# 累加类属性变量
NewsPaper.__print_times += 1 # 实例方法
def show_news(self):
print("报纸标题:%s" % self.title)
print("报纸内容:%s" % self.content) # 类方法(封装类属性,外界提供访问接口,保护类属性)
@classmethod
def get_times(cls):
return cls.__print_times # 静态方法
@staticmethod
def static_method():
# 静态方法(可通过类名访问类属性)
# 静态方法不可访问实例属性
print(NewsPaper.__print_times)
print("我是静态方法!")

1. 实例属性和实例方法

在类中使用__init__初始化的属性叫做叫做实例属性

使用def定义的函数叫做实例方法

2. 类属性和类方法

在创建类class下面直接定义的变量称作类属性

使用@classmethod装饰器进行装饰的函数,称作类方法

    # 类方法(封装类属性,外界提供访问接口,保护类属性)
@classmethod
def get_times(cls):
return cls.__print_times

3. 静态方法

使用@staticmethod装饰器进行装饰的函数,称作静态方法

静态方法没有默认的 self 或者 cls 参数, 如果方法并没有访问实例属性或者类属性, 我们可将其设置为静态方法, 减少了参数的传递.

    # 静态方法
@staticmethod
def static_method():
# 静态方法(可通过类名访问类属性)
# 静态方法不可访问实例属性
print(NewsPaper.__print_times)
print("我是静态方法!")

 三者的区别

实例方法:实例方法可以通过实例对象进行调用和访问, 方法内可以使用self访问调用实例属性和实例方法,使用cls关键字访问调用类属性和类方法,

类方法: 类属性和类方法归所有本类型的实例对象共享, 可通过实例对象访问, 也可通过类对象访问. 如果要修改类属性, 必须通过类名的方式访问.

静态方法:静态方法可通过类对象或者实例对象访问, 静态方法内部不可访问实例属性, 但可通过类名访问实例属性.

Python中的实例方法、classmethod和staticmethod的区别的更多相关文章

  1. Python中@property和@classmethod和@staticmethod

    前戏 首先,先要弄清楚一个类里面的,各个组成部分都应该怎么称呼. - 注:可能叫法会不太一样. 关于@property 顾名思义:它的意思为‘属性’. 作用: 1:使用它你将会把类方法,变为类属性.并 ...

  2. python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  3. python中dtype,type,astype的区别

    python中dtype,type,astype的区别 type() dtype() astype() 函数名称 用法 type 返回参数的数据类型 dtype 返回数组中元素的数据类型 astype ...

  4. Python中classmethod和staticmethod的区别

    学习python中经常会出现一些相近或者相似的语法模块等,需要对比分析才能加深记忆,熟练运用. staticmethod:静态方法 classmethod:类方法 在python中,静态方法和类方法都 ...

  5. python中的实例方法、静态方法、类方法、类变量和实例变量

    class MyTest: myname = 'peter' # add a instance attribute    def __init__(self, name):        self.n ...

  6. python中的实例方法、类方法、静态方法的区别

    Python 除了拥有实例方法外,还拥有静态方法和类方法,跟Java相比需要理解这个类方法的含义. class Foo(object): def test(self)://定义了实例方法 print( ...

  7. python classmethod 和 staticmethod的区别

    https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner 1. ...

  8. python中静态方法、类方法、属性方法区别

    在python中,静态方法.类方法.属性方法,刚接触对于它们之间的区别确实让人疑惑. 类方法(@classmethod) 是一个函数修饰符,表是该函数是一个类方法 类方法第一个参数是cls,而实例方法 ...

  9. Python基础学习-Python中最常见括号()、[]、{}的区别

    Python中最常见括号的区别: 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. Python中的 ...

  10. 关于python中赋值、浅拷贝、深拷贝之间区别的深入分析

    当重新学习了计算机基础课程<数据结构和算法分析>后再来看这篇自己以前写的博文,发现错误百出.python内置数据类型之所以会有这些特性,归根结底是它采用的是传递内存地址的方式,而不是传递真 ...

随机推荐

  1. yolo buffer is too small for requested array

    yolo.cfg 与 yolo.weights 版本一定要对应, darknet链接 https://github.com/pjreddie/darknet 下载后在cfg文件夹下找到yolov2的配 ...

  2. [转帖] SS, SP, BP 三个寄存器

    SS, SP, BP 三个寄存器 https://blog.csdn.net/vspiders/article/details/55669265 这么看 计算机组成原理 还有 考试的很多题目非常有用啊 ...

  3. jenkins了解一下,讲一下jenkins这个鬼东西

    一.jenkins是干什么的? jenkins是一个免费的集成工具,它是基于java开发的.用来做自动化部署,傻瓜化操作. 一般的项目部署流程: 开发代码——>功能测试——>打包(使用ma ...

  4. Python 基础之----网络编程

    阅读目录 一 客户端/服务端架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现象 ...

  5. StringBuilder与String有哪些区别?

    System.String具备不可修改性,在程序中这样的特性容易产生性能上的问题.针对这个问题.NET提供的StringBuilder类可以解决类似的问题. String 和 StringBuilde ...

  6. spring 给一个类 生成test

    右击一个类,然后:GoTo==>test ,就可以新建这个类的测试用例了,简单粗暴, 如果想要不污染数据库,就在一个测试用例 的标签@Test 下面在加上@RollBack 这样: @Test ...

  7. SSH的使用

    1.如何设置SSH的超时时间 使用SSH客户端软件登录linux服务器后,执行 echo $TMOUT可以查看SSH链接超时时间: 使用vim /etc/profile可以编辑配置页面 修改TMOUT ...

  8. postfix 邮箱设置及常见错误

    postfix 邮箱设置及常见错误 1.如果装了sendmail的话,先卸载了. yum remove sendmail 2.安装 Postfix yum install postfix 3.更改默认 ...

  9. CML\LVDS

    LVDS和CML电平应用区别 https://wenku.baidu.com/view/6bb0066f011ca300a6c3908c.html

  10. Military Problem CodeForces 1006E (dfs序)

    J - Military Problem CodeForces - 1006E 就是一道dfs序的问题 给定一个树, 然后有q次询问. 每次给出u,k, 求以u为根的子树经过深搜的第k个儿子,如果一个 ...