Python 面向对象静态方法、类方法、属性方法知识点小结
作者:WFaceBoss 发布时间:2022-02-10 07:45:52
本文实例讲述了Python 面向对象静态方法、类方法、属性方法知识点。分享给大家供大家参考,具体如下:
(1)静态方法--》-@staticmethod
装饰类中方法
只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性
class Dog(object):
def __init__(self,name):
self.name = name
@staticmethod #实际上跟类没什么关系了
def eat(self):
print("%s is eating %s" %(self.name,'dd'))
def talk(self):
print("%s is talking"% self.name)
d = Dog("Td")
d.eat(d)
(2)类方法-----》 @classmethod
装饰类中方法
只能访问类变量,不能访问实例变量
@classmethod
def eat(self):
print("%s is eating %s" %(self.name,'dd'))
(3)属性方法----》 @property #attribute
装饰类中方法
把一个方法变成一个静态属性
@property #attribute
def eat(self):
print("%s is eating %s" %(self.name))
# 调用
Dog("TD").eat
1.需要将一个值传递给eat属性方法-----修改属性值?
存在的问题是变成属性了直接赋值是无法实现的,需要在重新相同的方法,同时将该方法加上@eat.setter
进行装饰。
@property #attribute
def eat(self):
print("%s is eating %s" %(self.name,self.__food))
@eat.setter
def eat(self,food):
print("set to food:",food)
Self.__food=food
2.删除属性---同名方法使用 @eat.deleter
修饰
@property #attribute
def eat(self):
print("%s is eating %s" %(self.name,self.__food))
@eat.deleter
def eat(self):
del self.__food
总结:
1. 通过@staticmethod
装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法。
2. 类方法通过@classmethod
装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量。
3. 属性方法的作用就是通过@property
把一个方法变成一个静态属性,调用时与调用属性的方式相同。
3.1 把一个方法变成静态属性的作用:
当某个属性的值是一系列动作后才得到的结果。所以每次调用时,其实它都要经过一系列的动作才返回结果的,但这些动作过程不需要用户关心,用户只关心得到这个属性的值即可,也就是说用户只需要调用这个属性就可以了。
(1)修改属性值
将由@proerty
装饰器(把一个方法变成一个静态属性)使用@proerty.setter
装饰器再装饰一下,此时 你需要写一个新方法(同名), 对这个属性值进行更改。
(2)删除属性
#1:将由@proerty
装饰器(把一个方法变成一个静态属性)使用@proerty.deleter
装饰器再装饰一下,此时 你需要写一个新方法(同名)。
#2:使用del删除该实例所对应的属性方法(属性) 例如:del 对象.属性
源码学习地址:https://gitee.com/FelixBinCloud/PythonLearn/commit/bad7a51da107bec6b2b2db697318a6935847d208
希望本文所述对大家Python程序设计有所帮助。
来源:https://www.cnblogs.com/wfaceboss/p/9449775.html
猜你喜欢
- 目录del:根据索引值删除元素pop():根据索引值删除元素remove():根据元素值进行删除clear():删除列表所有元素在 Pyth
- 本月的每月挑战会主题是NLP,我们会在本文帮你开启一种可能:使用pandas和python的自然语言工具包分析你Gmail邮箱中的内容。NL
- 在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高。一.什么是推导式推导式是从一个或者多个迭
- 函数的作用域python中的作用域分4种情况:L:local,局部作用域,即函数中定义的变量;E:enclosing,嵌套的父级函数的局部作
- 想必Java 的开发者没有不知道或者没用过 jps 这个命令的,这个命令是用来在主机上查看有哪些 Java 程序在运行的。我刚用 Go 语言
- MySQL插件式存储引擎是MySQL数据库服务器中的组件,负责为数据库执行实际的数据I/O操作,并能允许和强制执行面向特殊应用需求的特定特性
- 开篇先明义:lambda是表达式,而def函数是语句代码块所以lambda其实就是一个稍微高级一点的式子而已,只不过这个式子比较长,而且还会
- 内容摘要:最近在做项目的时候,客户要求表格里的数据可以拖选,于是用JS写了个下面的方法。支持IE、FIREFOX等浏览器。实现对整行、整列数
- Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日
- TensorFlow用张量这种数据结构来表示所有的数据。用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩
- 分析使用CrawlSpider结合LinkExtractor和Rule爬取网页信息LinkExtractor用于定义链接提取规则,一般使用a
- 今天在intellij调试spark的时候感觉每次有新的一段代码,都要重新跑一遍,如果用spark-shell,感觉也不是特别方便,如果能像
- 相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具。写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就
- 本文实例为大家分享了Python+OpenCV实现图像的全景拼接的具体代码,供大家参考,具体内容如下环境:python3.5.2 + ope
- 关于树莓派四驱小车的运动方向控制、摄像头方向控制已经在前面的两篇博文中介绍过。有需要的可以参考。本文也是基于上述两个python文件就绪的情
- 1.连接测试连接是否成功:import redisr = redis.Redis(host='192.168.136.102'
- request获取post请求中的json数据def hello(request): data = json.loads(request.b
- 这篇文章主要介绍了Python魔法方法 容器部方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- python面向对象编程入门,我们需要不断学习进步"""抽象工厂模式的实现"""
- 身为一名小小的程序猿,在日常开发中不可以避免的要和where in和like打交道,在大多数情况下我们传的参数不多简单做下单引号、敏感字符转