python静态方法、类方法
常规:
class Dog(object):
def __init__(self,name):
self.name=name def eat(self):
print('%s is eating'%self.name) d1=Dog('lele')
d1.eat()
1.静态方法:名义上由类管理,而实际在调用时,需要手动把实例对象传进去作参数
class Dog(object):
def __init__(self,name):
self.name=name
@staticmethod
def eat(self):
print('%s is eating'%self.name) d1=Dog('lele')
d1.eat(d1)
2.类方法:只能访问类变量,不能访问实例变量
class Dog(object):
name='xiaomei'
def __init__(self,name):
self.name=name @classmethod
def eat(self):
print('%s is eating'%self.name) d1=Dog('lele')
d1.eat()
实例变量name='lele',类变量name='xiaomei'。
调用结果为:xiaomei is eating
3.属性方法:把一个方法变为一个静态属性(用途:用户只需要知道查询结果(调用属性),而复杂的实现过程不需要用户知道。eg:第三方查询航班)
class Dog(object):
def __init__(self,name):
self.name=name @property
def eat(self):
print('%s is eating'%self.name) d1=Dog('lele')
d1.eat
lele is eating
若要增加参数,可以通过 @属性方法名.setter 来实现
class Dog(object):
def __init__(self,name):
self.name=name
self.__food=None
#将一个方法变为静态属性
@property
def eat(self):
print('%s is eating %s' % (self.name,self.__food)) #更改属性方法
@eat.setter
def eat(self,food): #增加了参数
self.__food=food
print('%s is eating %s' % (self.name, self.__food))
#删除属性方法
@eat.deleter
def eat(self):
del self.__food
print('已删除') d1=Dog('lele')
d1.eat
d1.eat='gutou' #变成静态属性后,注意赋值方式
d1.eat
del d1.eat
lele is eating None
lele is eating gutou
lele is eating gutou
已删除
python静态方法、类方法的更多相关文章
- python静态方法类方法属性方法
Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问 ...
- Python静态方法 类方法
通常情况下,类中函数中定义的所有函数,,都是对象的绑定方法,除此之外,还有专门的静态方法和类方法,这两个是专门给类使用的,但是对象非要调用也是不会报错的. 对象在调用的时候会把自己传递给self,也就 ...
- python 静态方法、类方法(二)
<Python静态方法.类方法>一文中曾用在类之外生成函数的方式,来计算类的实例的个数.本文将探讨用静态方法和类方法来实现此功能. 一使用静态方法统计实例 例1.static.py # - ...
- 关于python的类方法、实例方法和静态方法区别
python的类方法需要在方法前面加装饰器:@classmethod ,静态方法是在方法前面加装饰器:@staticmethod. 类方法.类属性是属于类自身,属于类自身的命名空间,和实例方法.实例属 ...
- Python静态方法(staticmethod)和类方法(classmthod)
Python静态方法(staticmethod)和类方法(classmthod)翻了翻之前的笔记,也刚好看到一篇不错的blog,关于静态方法和类方法的,方便以后查阅,就写在这里了,废话不多说,直接上代 ...
- Python 静态方法、类方法和属性方法
Python 静态方法.类方法和属性方法 静态方法(staticmethod) staticmethod不与类或者对象绑定,类和实例对象都可以调用,没有自动传值效果,Python内置函数staticm ...
- IOS—静态方法(类方法)和实例方法
1.实例方法/动态方法 a).标识符:- b).调用方式:(实例对象 函数) c).实例方法在堆栈上. 2.静态方法/类方法 a).标识符:+ b).调用方式:(类 函数) c).静态方法 ...
- IOS基础——静态方法(类方法)和实例方法
1.实例方法/动态方法 a).标识符:- b).调用方式:(实例对象 函数) c).实例方法在堆栈上. 2.静态方法/类方法 a).标识符:+ b).调用方式:(类 函数) c).静态方法 ...
- Java学习日记基础(五)——类、对象之this、静态变量(类变量)、静态方法(类方法)、四大特征
this 赵本山问奥尼尔:“我的爸爸的爸爸是谁?” 奥尼尔:“不知道” 赵本山:“你傻啊,是我爷爷” 奥尼尔回去问科比:“我的爸爸的爸爸是谁?” 科比:“不知道” 奥尼尔:”你傻啊,是赵本山的爷爷“ ...
- python类的实例方法\静态方法\类方法区别解析(附代码)
前言 搞了好久python,一直搞得不太清楚这几种类的方法,今天花时间好好测试一下,算是弄懂点皮毛吧. 三种方法的不同 先剽窃个图看一下 可以看到,实例是三种方法都可以调用的,而类只可以调用两种.所以 ...
随机推荐
- linux shell习题
课件地址:https://wenku.baidu.com/view/bac2ff10f18583d0496459f3.html 1.测试环境变量:HOME,PWD,IFS等2.测试位置变量:$$,$# ...
- mysql判断两个时间段是否有交集
//判断两个时间段是否有交集 private function checkTimeCross($start_time,$end_time){ $sql ) AND ((start_time > ...
- log4j2配置推荐
<?xml version="1.0" encoding="UTF-8"?> <!-- monitorInterval为监听配置变化的间隔,3 ...
- 为什么不应该使用ZooKeeper做服务发现
[编者的话]本文作者通过ZooKeeper与Eureka作为Service发现服务(注:WebServices体系中的UDDI就是个发现服务)的优劣对比,分享了Knewton在云计算平台部署服务的经验 ...
- ARM的栈指令(转)
ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...
- tp5 本地安装和调试的问题
安装的时候用官方下载的包或者用composer指定版本号,不要用git,会安装最新的包. 本地配置域名的时候出错,要不就是500要不就是找不到文件,原因是目录路径里的反斜杆加字母t被转义了,改成正斜杠 ...
- Ubuntu 安装 VS code
sudo snap install --classic vscode 没有snap就先装snap,是的,就是这么简单.
- 线性回归、Logistic回归、Softmax回归
线性回归(Linear Regression) 什么是回归? 给定一些数据,{(x1,y1),(x2,y2)…(xn,yn) },x的值来预测y的值,通常地,y的值是连续的就是回归问题,y的值是离散的 ...
- Jbarcode 条形码生成工具
一.准备jar包 https://sourceforge.net/projects/jbcode/?source=typ_redirect 二.编写工具类 package com.example.de ...
- 封装QML能访问的类
一.常用宏 1.信号与槽 C++类中的信号与槽都可以在QML中访问 2.C++类的成员函数,Q_INVOKABLE Q_INVOKABLE void function(); 3.C++类的枚举,Q_E ...