专栏首页授客的专栏Python @classmethod和@staticmethod装饰器使用介绍

Python @classmethod和@staticmethod装饰器使用介绍

简介

静态方法:类中用 @staticmethod装饰的不带 self 参数的方法。类的静态方法可以直接使用类名调用。

类方法: 默认有个cls参数,可以被类和对象调用,需要加上 @classmethod装饰器

普通方法: 默认有个self参数,且只能被对象调用。

代码

classDotaGame:

top_score = 0

def__init__(self, name):

self.name = name

@staticmethod

defprint_game_rules():

print("游戏规则:1 xxxx游戏规则1 \n 2 xxxx游戏规则2")

@classmethod

defprint_store(cls):

print("历史最高分: %s" % cls.top_score)

defprint_game_name(self):

print('开始 %s 游戏' % self.name)

DotaGame('dota').print_game_name()

DotaGame.print_store()

DotaGame.print_game_rules()

运行结果:

开始dota游戏

历史最高分: 0

游戏规则:1 xxxx游戏规则1

2 xxxx游戏规则2

结论

1、对于不需要访问类实例属性,类实例方法,和类属性的函数定义成静态函数

2、对于需要访问类属性的定义成类函数

3、对于需要访问实例属性、实例方法的定义成实例函数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python property使用简介

    def __init__(self, username, password):

    授客
  • Python_关于多线程下变量赋值取值的一点研究

    #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'shouke' #!/...

    授客
  • Python __exit__,__enter__函数with语句的组合应用

    设计对象类时,我们可以为对象类新增两个方法,一个是__enter(self)__,一个是__exit__(self, exc_type, exc_val, e...

    授客
  • python学习笔记6.6-类的惰性属性

    我们想将一个只读属性定义为property属性方法,只有在访问它时才参与计算。同时,一旦访问了该属性,希望把计算出来的值缓存起来,不要每次访问它时都要重新计算。...

    锦小年
  • python 面向对象

    面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作...

    py3study
  • 接口应用小玩具-博客园积分排名变动监控工具

    小玩具-博客园积分排名变动监控工具 一个简单的在线服务监控和提醒工具 1   概述 前段时间自己准备重新开启自己的博客园,然后还和一些圈子里面的朋友夸下海口,自...

    用户1170933
  • 面向对象

    析构函数(在实例释放、销毁的时候自动执行的、通常用于一些收尾工作,如:关闭一些数据库链接,关闭打开的临时文件 当程序执行完以后, 析构__del__(self)...

    py3study
  • 封装,封装的原理,Property ,setter ,deleter

    py3study
  • 贝塞尔曲线之爱琴海 -- 定不负相思意

    前言: 一个人有多不正经,就有多深情。一个程序员有多闷,就代表ta有多骚。 我不等山无棱,不等夏雨雪,不等天地合。因为即使江水为竭,即使冬雷震震,我都在你一...

    谦谦君子修罗刀
  • python 面向对象之析构函数

    在实例释放、销毁的时候自动执行的,通常用于做一些收尾工作, 如关闭一些数据库连接,关闭打开的临时文件

    py3study

扫码关注云+社区

领取腾讯云代金券