python3类方法与静态方法
2024-08-24 07:21:19
静态⽅法和类⽅法
转载于:https://blog.csdn.net/qq_41020281/article/details/79634707
1. 类⽅法
是类对象所拥有的⽅法,需要⽤修饰器 @classmethod 来标识其为类⽅法, 对于类⽅法,第⼀个参数必须是类对象,⼀般以 cls 作为第⼀个参数(当然 可以⽤其他名称的变量作为其第⼀个参数,但是⼤部分⼈都习惯以'cls'作为第 ⼀个参数的名字,就最好⽤'cls'了),能够通过实例对象和类对象去访问。
class People(object):
country = 'china'
#类⽅法,⽤classmethod来进⾏修饰
@classmethod
def getCountry(cls):
return cls.country
p = People()
print p.getCountry() #可以⽤过实例对象引⽤
print People.getCountry() #可以通过类对象引⽤
类⽅法还有⼀个⽤途就是可以对类属性进⾏修改:
class People(object):
country = 'china'
#类⽅法,⽤classmethod来进⾏修饰
@classmethod
def getCountry(cls):
return cls.country
@classmethod
def setCountry(cls,country):
cls.country = country
p = People()
print p.getCountry() #可以⽤过实例对象引⽤
print People.getCountry() #可以通过类对象引⽤
p.setCountry('japan')
print p.getCountry()
print People.getCountry()
结果显示在⽤类⽅法对类属性修改之后,通过类对象和实例对象访问都发⽣ 了改变
2. 静态⽅法
需要通过修饰器 @staticmethod 来进⾏修饰,静态⽅法不需要多定义参数
class People(object):
country = 'china'
@staticmethod
#静态⽅法
def getCountry():
return People.country
print People.getCountry()
总结 从类⽅法和实例⽅法以及静态⽅法的定义形式就可以看出来,类⽅法的第⼀ 个参数是类对象cls,那么通过cls引⽤的必定是类对象的属性和⽅法;⽽实例 ⽅法的第⼀个参数是实例对象self,那么通过self引⽤的可能是类属性、也有 可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实 例属性的情况下,实例属性优先级更⾼。静态⽅法中不需要额外定义参数, 因此在静态⽅法中引⽤类属性的话,必须通过类对象来引⽤
最新文章
- .NET - 基于事件的异步模型
- HAOI2015 泛做
- BZOJ2597 [Wc2007]剪刀石头布(最小费用最大流)
- iOS学习之手势
- [python] 线程
- SpringMVC——对Ajax的处理(包含 JSON 类型)
- js贪吃蛇
- hdu 1695 GCD 莫比乌斯反演入门
- nginx错误日志级别
- PopupWindow 的showatlocation参数解释
- Xcode4 布置Git环境Your working copy is out of date. Try pulling from the remote to get the latest change
- 【入门】安装Elasticsearch5.0 部署Head插件
- [APP]如果你想反编译
- Java源码学习 -- java.lang.StringBuilder,java.lang.StringBuffer,java.lang.AbstractStringBuilder
- 扩展jquery.validate自定义验证,自定义提示,本地化
- Java中的回调
- Python爬虫之正则表达式(3)
- ASP.NET Core使用HttpClient的同步和异步请求
- 3.让linux 增加 wget 命令
- Spring PropertyEditor Spring conversion框架分析
热门文章
- CMDB资产管理系统开发【day26】:实现资产自动更新
- ubuntu14.04 网络配置
- LFYZ-OJ ID: 1026 数的计数(数的计算)NOIP2001
- ArcGis安装失败提示“需要Microsoft .NET Framework 3.5 sp1或等效环境”的解决方法
- HTML(三)HTML属性
- [物理学与PDEs]第5章习题4 广义 Hookean 定律的张量的对称性
- jQuery提示组件toastr(取代alert)
- luogu P5287 [HNOI2019]JOJO
- javascript基础 之 void
- lucene学习的小结