python类方法和静态方法详解
目录
- 类方法
- 静态方法
- 1特点
- 2使用场景
- 总结
类方法
需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为参数
使用场景
1当方法中需要使用类对象(如访问私有类属性)时,定义类方法
2类方法一般和类属性配合使用
# 需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为参数 # 使用场景 # 1当方法中需要使用类对象(如访问私有类属性)时,定义类方法 # 2类方法一般和类属性配合使用 class Dog(object): __tooth = 10 t=10 #修改私有属性 @classmethod def getooth(cls, c): cls.__tooth = c return cls.__tooth #得到私有属性 def get(self): return self.__tooth ww = Dog() cc=Dog() result1=ww.get() #10 result2 = ww.getooth(100) #100 result3=ww.get() #100 result4=cc.get() #100成功修改私有属性 print(result1, result2,result3,result4 )
如果去掉@classmethod后,就无法修改私有类属性,result4 变成了10
self,和cla只是名词,可以更换其它名字,@不可去掉
静态方法
1特点
需要通过修饰器@staticmethod来修饰,静态方法既不需要传递实例对象,也不需要传递类对象(形参没有sslf/cls)
静态方法也可以通过类对象和实例对象去访问
2使用场景
当方法中既不需要使用实例对象(如实例属性,实例方法),也不需要使用类对象(如类属性、类方法、创建实例等时,定义静态方法
取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗
#1特点 #需要通过修饰器@staticmethod来修饰,静态方法既不需要传递实例对象,也不需要传递类对象(形参没有sslf/cls) #静态方法也可以通过类对象和实例对象去访问 #2使用场景 #当方法中既不需要使用实例对象(如实例属性,实例方法),也不需要使用类对象(如类属性、类方法、创建实例等时,定义静态方法 #取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗 class Dog(object): @staticmethod def static(): print("这是一个静态方法") dog=Dog() dog.static() #这是一个静态方法 Dog.static() #这是一个静态方法
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!
相关推荐
-
python基础之类方法和静态方法
目录 类方法 静态方法 复习 总结 类方法 class People: country='China' # 类方法 用classmethod来修饰 @classmethod #通过标识符来表示下方方法为类方法 def get_country(cls): #习惯性使用cls return cls.country #访问类属性 pass pass print(People.get_country()) #通过类对象去引用 p=People() print('实例对象访问%s'%p.get_count
-
浅谈python 类方法/静态方法
1.类方法 类方法是从属于"类对象"的方法.类对象可以通过装饰器@classmethod来定义,具体格式如下: @classmethod def 类方法名(cls [, 形参列表]): 方法体 要点如下: @classmethod必须位于方法的上面一行 第一个参数cls(class的缩写,和前面笔记介绍的self类似),必须要有,代指"类对象"本身. 调用类方法格式:类名.类方法名(参数列表).参数列表中不需要也不能给cls参数进行传值,解释器会自动赋值. 类方法中
-
关于Python3 类方法、静态方法新解
如下所示: class Date: def __init__(self, year, month, day): self.year = year self.month = month self.day = day # 实例方法 def tomorrow(self): self.day +=1 def __str__(self): return '{}/{}/{}'.format(self.year,self.month,self.day) # 静态方法 @staticmethod def for
-
Python实例方法、类方法、静态方法区别详解
1.关于参数的区别 实例方法:定义实例方法是最少有一个形参 ---> 实例对象,通常用 self 类方法:定义类方法的时候最少有一个形参 ---> 类对象,通常用 cls 静态方法:定义静态方法的时候可以不定义形参 2.关于方法定义时候添加装饰器的区别 实例方法:不需要添加装饰器 类方法:需要添加装饰器 ----> @classmethod 静态方法:需要添加装饰器 ---> @staticmethod 3.调用: 1.实例方法可以通过对象直接调用 2.但是用类名调用的时候,需要创
-
深入了解Python 方法之类方法 & 静态方法
写在之前 这几天的阅读量蜜汁低,是什么原因我也没搞清楚,如果你们觉得我哪里写的有问题,或者是哪里不好,欢迎后台或者微信告知我,先行谢过. 昨天的文章 详解类方法之绑定方法与非绑定方法 中写了方法中的绑定方法和非绑定方法,今天我们继续来学习剩下的「类方法」和「静态方法」. 类方法 & 静态方法 在开始之前,先让我们来看下面一段代码: class Sample: language = "C++" def __init__(self): self.language = "p
-
解析python 类方法、对象方法、静态方法
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 =
-
python类方法和静态方法详解
目录 类方法 静态方法 1特点 2使用场景 总结 类方法 需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为参数 使用场景 1当方法中需要使用类对象(如访问私有类属性)时,定义类方法 2类方法一般和类属性配合使用 # 需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为参数 # 使用场景 # 1当方法中需要使用类对象(如访问私有类属性)时,定义类方法 # 2类方法一般和类属性配合使用 c
-
Python探索之静态方法和类方法的区别详解
面相对象程序设计中,类方法和静态方法是经常用到的两个术语. 逻辑上讲:类方法是只能由类名调用:静态方法可以由类名或对象名进行调用. python staticmethod and classmethod Though classmethod and staticmethod are quite similar, there's a slight difference in usage for both entities: classmethod must have a reference to
-
Python 高级专用类方法的实例详解
Python 高级专用类方法的实例详解 除了 __getitem__ 和 __setitem__ 之外 Python 还有更多的专用函数.某些可以让你模拟出你甚至可能不知道的功能.下面的例子将展示 UserDict 一些其他专用方法. def __repr__(self): return repr(self.data) (1) def __cmp__(self, dict): (2) if isinstance(dict, UserDict): return cmp(self.data, dic
-
python 类的基础详解与应用
目录 类的定义 类对象 变量 类变量 局部变量 实例变量 私有变量 类的方法 特殊方法 继承 单继承 多继承 类的定义 # class是定义类的关键字,ClassName为类的名称 class ClassName: # 在这里写其他内容 pass class ClassName(object): # 在这里写其他内容 pass 这是一个最简单的类定义,在python3后类定义一般都会继承object类,不过不继承也没有多大的问题. 类对象 类对象也称实例 # 这就是创建了一个类对象(实例),a是
-
JAVA类变量及类方法代码实例详解
这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量. public class C { public static void main(String[] args){ Child ch1 = new Child(12,"小小"
-
MySQL数据库设计之利用Python操作Schema方法详解
弓在箭要射出之前,低声对箭说道,"你的自由是我的".Schema如箭,弓似Python,选择Python,是Schema最大的自由.而自由应是一个能使自己变得更好的机会. Schema是什么? 不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据.意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证.一般我都是加很多判断,各种if,导致代码很丑陋,能不能有一种方式比较优雅的验证用户数据呢
-
Python之str操作方法(详解)
1. str.format():使用"{}"占位符格式化字符串(占位符中的索引号形式和键值对形式可以混合使用). >>> string = 'python{}, django{}, tornado{}'.format(2.7, 'web', 'tornado') # 有多少个{}占位符就有多少个值与其对应,按照顺序"填"进字符串中 >>> string 'python2.7, djangoweb, tornadotornado'
-
基于python时间处理方法(详解)
在处理数据和进行机器学习的时候,遇到了大量需要处理的时间序列.比如说:数据库读取的str和time的转化,还有time的差值计算.总结一下python的时间处理方面的内容. 一.字符串和时间序列的转化 time.strptime():字符串=>时间序列 time.strftime():时间序列=>字符串 import time start = "2017-01-01" end = "2017-8-12" startTime = time.strptime
-
Python探索之SocketServer详解
SocketServer,网络通信服务器,是Python标准库中的一个模块,其作用是创建网络服务器.SocketServer模块定义了一些类来处理诸如TCP.UDP.UNIX流和UNIX数据报之上的同步网络请求. SocketServer模块处理网络请求的功能,可以通过两个主要的类来实现:一个是服务器类,一个是请求处理类. 服务器类 处理通信问题,如监听一个套接字并接收连接等: 请求处理类 处理"协议"问题,如解释到来的数据.处理数据并把数据发回给客户端等. 这种实现将服务器的实现过程
-
python学习 流程控制语句详解
###################### 分支语句 python3.5 ################ #代码的缩进格式很重要 建议4个空格来控制 #根据逻辑值(True,Flase)判断程序的运行方向 # Ture:表示非空的量(String,tuple元组 .list.set.dictonary),所有非零的数字 # False:0,None .空的量 #逻辑表达式 可以包含 逻辑运算符 and or not if: ##################################
随机推荐
- android中Invalidate和postInvalidate的更新view区别
- PHP调用Linux的命令行执行文件压缩命令
- [转]prototype 源码解读 超强推荐第1/3页
- 英语基本用语总汇1000句 推荐
- Oracle 下医嘱执行函数
- Oracle Decode()函数使用技巧分享
- Python实现的一个自动售饮料程序代码分享
- Android中Okhttp3实现上传多张图片同时传递参数
- php中smarty实现多模版网站的方法
- php radio 单选框获取与保持值的实现代码
- Android Studio3.0新特性及安装图文教程
- 轻松掌握JavaScript策略模式
- JS实现仿微博可关闭弹出层效果
- javascript获取select值的方法分析
- 基于javascript html5实现3D翻书特效
- C#可空类型用法分析
- Spring与Mybatis基于注解整合Redis的方法
- Java socket字节流传输示例解析
- 详解Java继承中属性、方法和对象的关系
- Ubuntu中静态DNS配置的方法详解