Python类总结-ClassMethod, StaticMethod
classmethod-把classmethod装饰的方法变成为类中的方法
- 作用: 把classmethod装饰的方法变成为类中的方法,这个方法直接可以被类调用,不需要依托任何对象
- 应用场景: 当这个方法只涉及静态属性的时候,就应该使用classmethod装饰这个方法
#类里面的操作行为
class Goods:
__discount = 0.5
def __init__(self,name, price):
self.name = name
self.__price = price #折扣前价格定义为私有的
@property
def price(self): #折扣后的价格定义为一个方法并用property装饰,进行一些操作
return self.__price*Goods.__discount
@classmethod #把classmethod装饰的方法变成为类中的方法,这个方法直接可以被类调用,不需要依托任何对象
def change_discount(cls,new_discount): #cls是固定参数,指代的是该类
cls.__discount = new_discount
#当这个方法只涉及静态属性的时候,就应该使用classmethod装饰这个方法
apple = Goods('苹果', 5)
print(apple.price)
Goods.change_discount(0.8)
print(apple.price)
StaticMethod- 把和类或对象无关的方法放入某个类 (借鉴JAVA的一切皆对象的原则)
class Login:
def __init__(self,name, password):
self.name = name
self.password = password
def login(self):
pass
@staticmethod #装饰一个和类无关的方法
def get_usr_pwd(): #无需传任何参数,self也不要
usr = input('username:')
password = input('password:')
Login(usr,password)
Login.get_usr_pwd() #可以直接调用Login类中get_usr_pwd,且调用之前无需实例化对象
总结
- 类方法和静态方法都是类调用的
- 对象可以调用类的静态方法和类方法
- 类方法有个默认参数cls,代表类
- 静态方法没有默认的参数
Python类总结-ClassMethod, StaticMethod的更多相关文章
- Python类中装饰器classmethod,staticmethod,property,
@classmethod 有的时候在类中会有一种情况,就是这个方法并不需要使用每一个对象属性 因此 这个方法中的self参数一个完全无用的参数,使用classmethod class A: __cou ...
- python中@classmethod @staticmethod区别
Python中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): prin ...
- python笔记---@classmethod @staticmethod
python定义类方法的三种方式: 1.常规方式--需要通过self参数隐式的传递当前类对象的实例 2.@classmethod修饰方式--@classmethod修饰的方法class_foo()需要 ...
- python中@classmethod @staticmethod区别(转)
pthon中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): print ...
- [转]python中@classmethod @staticmethod区别
Python中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): prin ...
- Python 中的 classmethod 和 staticmethod 有什么具体用途?
作者:李保银链接:https://www.zhihu.com/question/20021164/answer/18224953来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- python面试题之下面这些是什么意思:@classmethod, @staticmethod, @property?
回答背景知识 这些都是装饰器(decorator).装饰器是一种特殊的函数,要么接受函数作为输入参数,并返回一个函数,要么接受一个类作为输入参数,并返回一个类. @标记是语法糖(syntactic s ...
- 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法
第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一. 案例说明 本节定义了类Sta ...
- Python中的classmethod与staticmethod
首先,这是一个经典的问题. 我们首先做一个比较: classmethod的第一个参数是cls,即调用的时候要把类传入 这意味着我们我们可以在classmethod里使用类的属性,而不是类的实例的属性( ...
随机推荐
- UVA 10479 The Hendrie Sequence
https://vjudge.net/problem/UVA-10479 打表找规律: 1.根据n可以确定第n项在上表中第i行 2.减去前i-1行,就得到了n在第i行的第j个 3.第i行的规律:1个i ...
- 算法专题-STL篇
这篇文章着重记录c++中STL的用法.主要粗略的介绍其用法,以知识点的形式呈现其功能,不会深入源码分析其工作原理. 排序和检索. sort(a,a+n),对a[0]往后的n个元素(包括a[0])进行排 ...
- 其他:strtok和sscanf结合输入读取一行整数
gets(buf); int v; char *p = strtok(buf," "); while(p) { sscanf(p,"%d",&v); p ...
- stat命令--文件权限属性设置
stat命令文件权限属性设置 stat命令用于显示文件的状态信息. stat命令的输出信息比ls命令的输出信息要更详细. 语法 stat(选项)(参数) 选项 -L:支持符号连接: -f:显示文件系统 ...
- 教你Snapseed软件八个常用调图工具
教你Snapseed软件八个常用调图工具 教你Snapseed(指划修图)软件八个常用调图工具 老阿·编写 Snapseed是目前手机摄影修图中功能最强大的一款软件,很多功能很像电脑用的Photosh ...
- 【BZOJ】3262: 陌上花开
[题意]三维偏序,给定n个点(x,y,z),求每个点和(0,0,0)组成空间中的点数,有重点.1<=x,y,z<=2*10^5,1<=n<=10^5. [算法]CDQ分治+树状 ...
- 【BZOJ】2599: [IOI2011]Race 点分治
[题意]给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 1000000.注意点从0开始编号,无解输出-1. [算法]点分治 [题解] ...
- iOS程序启动原理---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...
- MOD - Power Modulo Inverted(SPOJ3105) + Clever Y(POJ3243) + Hard Equation (Gym 101853G ) + EXBSGS
思路: 前两题题面相同,代码也相同,就只贴一题的题面了.这三题的意思都是求A^X==B(mod P),P可以不是素数,EXBSGS板子题. SPOJ3105题目链接:https://www.spoj. ...
- HDU 1045 Fire Net (深搜)
题目链接 Problem DescriptionSuppose that we have a square city with straight streets. A map of a city is ...