一. 属性

所谓的属性,就是将一个类中的方法伪装成一个属性.在代码的级别是没有任何本质上的提升.但是让代码看起来更顺眼.

property 装饰器函数,内置函数,帮助你将类中的方法伪装成属性(特性).

调用方法的时候不需要主动加括号

让程序的逻辑性更加合理

使用方法:

@porperty.setter 装饰器,修改被property装饰的属性的时候会调用被这个装饰器装饰过的方法,除了self之外还有一个参数:被修改的值

@property.deleter 装饰器,当要删除被property装饰的属性的时候回调用被这个装饰器装饰过的方法.

classPerson:def __init__(self,name,age):

self.name=nameif type(age) isint:

self.__age =ageelse:print( '你输入的年龄的类型有误,请输入数字')

@property#属性的查看. 装饰器的用法

defage(self):return self.__age@age.setter#属性的修改

defage(self,a1):'''判断,你修改的年龄必须是数字'''

if type(a1) isint:

self.__age =a1else:print('你输入的年龄的类型有误,请输入数字')

@age.deleter#属性的删除

defage(self):del self.__agep1= Person('帅哥',20)print(p1.age)

p1.age= 23  #看上去更像是对某一个属性进行操作

print(p1.age)delp1.ageprint(p1.__dict__)

classCircle:def __init__(self,r):

self.r=r

@propertydef area(self): #这个方法计算结果本身就是一个属性,但是这个属性会随着这个类/对象的一些基础变量的变化而变化(本身是一个运算过程,但伪装成了一个属性)

return 3.14*self.r**2c= Circle(5)print(c.area)

c.r= 10

print(c.area)

二. 类方法

classmethod 类方法的装饰器 ,内置函数

使用类名调用,默认传类名作为第一个参数

不用对象命名空间中的内容,而用到了类命名空间中的变量(静态属性),或者类方法或静态方法

类方法:通过类名调用的方法,类方法中第一个参数约定俗成为cls, python自动将类名(类空间)传给cls.

classA:def func(self): #普通方法

print(self)

@classmethod#类方法

deffunc1(cls):print(cls)

a1=A()

a1.func()

A.func(a1)

A.func1()

a1=A()

a1.func1()#对象调用类方法,cls 得到的是类本身.

类方法的使用场景:

1. 类中有些方法不需要对象的参与时

classA:

name= 'ale'count= 1@classmethoddef func1(cls): #此方法无需对象参与

return cls.name + str(cls.count + 1)

a1=A()print(a1.func1())print(A.func1())

2.对类中的静态变量进行改变.

3.继承中,父类得到子类的类空间.

也可以不通过类方法,让父类中的某个方法得到子类空间的任意值

classA:

age= 12

deffunc2(self):print(self) #self 子类的对象,能得到子类 空间的任意值

classB(A):

age= 22b1=B()

b1.func2()

三. 静态方法

静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,主要是一些逻辑属于类,但是和类本身没有交互,即在静态方法中,不会涉及到类中的方法和属性的操作。可以理解为将静态方法存在此类的名称空间中。事实上,在python引入静态方法之前,通常是在全局名称空间中创建函数

@staticmethod 装饰静态方法  内是函数

如果一个类里面的方法,即不需要用到self中的资源,也不用cls中的资源

相当于一个普通的函数

但是你由于某种原因,还要把这个方法方法放在类中,这个时候,就将这个方法变成一个静态方法

好处:

代码块清晰

提高复用性

python展开面_python面度对象(属性,类方法,静态方法)相关推荐

  1. Python中如何使用__slots__限制对象属性来节约内存

    Python中如何使用__slots__限制对象属性来节约内存 __slots__ 是python中类的一个类属性,它允许我们明确声明类数据对象的成员有哪些,同时取消创建 对象默认自带的 __dict ...

  2. Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法

    内置属性 创建类时系统自动创建的属性 # 内置属性:dir(对象),列出所有的内置属性 class Person(object):'''Person类1'''# Person类2__slots__ = ...

  3. python中属性是什么意思啊_python中的“对象属性”和一般属性是什么?

    假设你有一个类Personclass Person: name = "Samuel" age = 50 country = "India" def method ...

  4. python 类组合_python类与对象的组合与继承

    1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...

  5. python self 序列_python中序列化对象

    # 序列化对象p1 import pickle                               # 内置库 class People: def __init__(self, name, a ...

  6. python是动态_Python中的对象和动态性 [菜鸟的理解,高手莫入]

    当我们谈到python时常常会说python中一切都是对象,字符串是对象,整数型是对象,标准库中的对象当然也是对象,class本身也是对象,类型(type)也是对象. 但是初学的时候会错误地认为,既然 ...

  7. python花式编码_Python——花式打印对象的若干种方法

    今天是Python专题的第10篇文章,我们来聊聊Python当中的类. 打印实例 我们先从类和对象当中最简单的打印输出开始讲起,打印一个实例是一个非常不起眼的应用,但是在实际的编程当中却非常重要.原因 ...

  8. python内置类型_Python内置对象类型

    核心数字类型: 数字:int,long,float,complex,bool 字符:str,unicode 列表:list 字典:dict 元组:tuple 文件:file 其他类型:集合(set), ...

  9. python创建矩阵_python中Numpy的属性与创建矩阵

    本篇文章给大家带来的内容是关于python中Numpy的属性与创建矩阵,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. ndarray.ndim:维度 ndarray.shape:形状 ...

最新文章

  1. DARPA可解释AI研究(XAI计划)的4年回顾与经验总结
  2. private MyAddin(System.IntPtr mdlDesc) : base(mdlDesc)这一步后就出bug
  3. 【leetcode记录02】递归
  4. 【dfs】【bfs】【链表】 求连通分量 (ssl 1759)
  5. 那些文献阅读能力爆表的科研学子,都在偷偷做这件事……
  6. 10099 The Tourist Guide
  7. Lucene 和 Elastic
  8. anaconda安装好tensorflow后,无法在jupyter notebook上使用的解决方法
  9. 【BZOJ4600】硬币游戏,博弈
  10. 利用 Python 进行数据分析(Python 数据分析)· 第 2 版
  11. java 类型转换原理_9.java数据类型的转换
  12. Redis在Windows下设置服务启动
  13. SqlSession接口和Executor
  14. tensorflow随笔——Yolo v1
  15. 免费微信小程序商城源代码,基于Uni-App,实现一码多端
  16. 计算机找不到WPS云盘,为什么我的电脑里没有WPS网盘入口?开启教程教给你!
  17. 电商项目:畅购商城4.0
  18. Hadoop HA 部署
  19. 有哪些wordpress企业网站主题推荐?
  20. FFmpeg使用滤镜链为视频插入多张图片

热门文章

  1. ubuntu的apt及pip自动下载换源脚本
  2. 【Python教程】sort 与sorted的用法与区别
  3. Python中的高级数据结构详解
  4. Python3协程(coroutine)理解
  5. python读写修改配置文件(ini)
  6. python如何批量发布数据并如何定时更换token
  7. Python3.8 新特性:赋值表达式
  8. Python 列表List常见操作和错误总结
  9. Python常用模块之configparser
  10. C++string类型与C语言字符数组的转换 std::string.c_str()函数