Python 面向对象静态方法、类方法、属性方法知识点小结

 更新时间:2020年03月09日 10:45:00   作者:WFaceBoss  
这篇文章主要介绍了Python 面向对象静态方法、类方法、属性方法,总结分析了Python 面向对象程序设计中静态方法、类方法、属性方法相关概念、知识点、操作技巧与使用注意事项,需要的朋友可以参考下

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 使用Tensorflow将自己的数据分割成batch训练实例

    使用Tensorflow将自己的数据分割成batch训练实例

    今天小编就为大家分享一篇使用Tensorflow将自己的数据分割成batch训练实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 总结分析python数据化运营关联规则

    总结分析python数据化运营关联规则

    本文内容主要介绍了python数据化运营中关联规则的一般应用场景,以及关联规则的实现,并例举了适应的应用示例,方便大家更直观的理解应用
    2021-08-08
  • Python使用sax模块解析XML文件示例

    Python使用sax模块解析XML文件示例

    这篇文章主要介绍了Python使用sax模块解析XML文件,结合实例形势分析了Python使用sax模块针对xml文件进行读取、解析、内容处理等相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)

    matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)

    这篇文章主要介绍了matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python 列表推导和生成器表达式的使用

    python 列表推导和生成器表达式的使用

    这篇文章主要介绍了python 列表推导和生成器表达式的使用方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法

    Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法

    这篇文章主要介绍了Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法,涉及Python针对文件与文件夹的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Anaconda入门使用总结

    Anaconda入门使用总结

    个人尝试了很多类似的发行版,最终选择了Anaconda,因为其强大而方便的包管理与环境管理的功能。该文主要介绍下Anaconda,对Anaconda的理解,并简要总结下相关的操作
    2018-04-04
  • python tkinter图形界面代码统计工具(更新)

    python tkinter图形界面代码统计工具(更新)

    这篇文章主要为大家详细介绍了python tkinter图形界面代码统计工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Python基础学习函数+模块+类

    Python基础学习函数+模块+类

    这篇文章主要介绍了Python基础学习函数+模块+类,这是基础学习的第三篇内容,小编已把前两篇链接放在下面,需要学习的同学可以参考一下
    2022-05-05
  • Python报错NameError: name ‘secrets‘ is not defined解决

    Python报错NameError: name ‘secrets‘ is not

    在使用Python进行安全编程时,我们经常需要使用secrets模块来生成安全的随机数,但是却遇到这个问题,本文主要介绍了Python报错NameError: name ‘secrets‘ is not defined解决,感兴趣的可以了解一下
    2024-06-06

最新评论