python展开面_python面度对象(属性,类方法,静态方法)
一. 属性
所谓的属性,就是将一个类中的方法伪装成一个属性.在代码的级别是没有任何本质上的提升.但是让代码看起来更顺眼.
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面度对象(属性,类方法,静态方法)相关推荐
- Python中如何使用__slots__限制对象属性来节约内存
Python中如何使用__slots__限制对象属性来节约内存 __slots__ 是python中类的一个类属性,它允许我们明确声明类数据对象的成员有哪些,同时取消创建 对象默认自带的 __dict ...
- Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法
内置属性 创建类时系统自动创建的属性 # 内置属性:dir(对象),列出所有的内置属性 class Person(object):'''Person类1'''# Person类2__slots__ = ...
- python中属性是什么意思啊_python中的“对象属性”和一般属性是什么?
假设你有一个类Personclass Person: name = "Samuel" age = 50 country = "India" def method ...
- python 类组合_python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...
- python self 序列_python中序列化对象
# 序列化对象p1 import pickle # 内置库 class People: def __init__(self, name, a ...
- python是动态_Python中的对象和动态性 [菜鸟的理解,高手莫入]
当我们谈到python时常常会说python中一切都是对象,字符串是对象,整数型是对象,标准库中的对象当然也是对象,class本身也是对象,类型(type)也是对象. 但是初学的时候会错误地认为,既然 ...
- python花式编码_Python——花式打印对象的若干种方法
今天是Python专题的第10篇文章,我们来聊聊Python当中的类. 打印实例 我们先从类和对象当中最简单的打印输出开始讲起,打印一个实例是一个非常不起眼的应用,但是在实际的编程当中却非常重要.原因 ...
- python内置类型_Python内置对象类型
核心数字类型: 数字:int,long,float,complex,bool 字符:str,unicode 列表:list 字典:dict 元组:tuple 文件:file 其他类型:集合(set), ...
- python创建矩阵_python中Numpy的属性与创建矩阵
本篇文章给大家带来的内容是关于python中Numpy的属性与创建矩阵,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. ndarray.ndim:维度 ndarray.shape:形状 ...
最新文章
- DARPA可解释AI研究(XAI计划)的4年回顾与经验总结
- private MyAddin(System.IntPtr mdlDesc) : base(mdlDesc)这一步后就出bug
- 【leetcode记录02】递归
- 【dfs】【bfs】【链表】 求连通分量 (ssl 1759)
- 那些文献阅读能力爆表的科研学子,都在偷偷做这件事……
- 10099 The Tourist Guide
- Lucene 和 Elastic
- anaconda安装好tensorflow后,无法在jupyter notebook上使用的解决方法
- 【BZOJ4600】硬币游戏,博弈
- 利用 Python 进行数据分析(Python 数据分析)· 第 2 版
- java 类型转换原理_9.java数据类型的转换
- Redis在Windows下设置服务启动
- SqlSession接口和Executor
- tensorflow随笔——Yolo v1
- 免费微信小程序商城源代码,基于Uni-App,实现一码多端
- 计算机找不到WPS云盘,为什么我的电脑里没有WPS网盘入口?开启教程教给你!
- 电商项目:畅购商城4.0
- Hadoop HA 部署
- 有哪些wordpress企业网站主题推荐?
- FFmpeg使用滤镜链为视频插入多张图片
热门文章
- ubuntu的apt及pip自动下载换源脚本
- 【Python教程】sort 与sorted的用法与区别
- Python中的高级数据结构详解
- Python3协程(coroutine)理解
- python读写修改配置文件(ini)
- python如何批量发布数据并如何定时更换token
- Python3.8 新特性:赋值表达式
- Python 列表List常见操作和错误总结
- Python常用模块之configparser
- C++string类型与C语言字符数组的转换 std::string.c_str()函数