该部分的三个属性都是高级方法,平时用的地方不是很多

一、静态方法

静态方法的使用不是很多,可以理解的就看一下,用的地方不是很多


class Dog(object):
def __init__(self,name):
self.name = name # 静态方法:平时用的不是很多,可以通过联想中国和台湾的关系来记忆
# 只是名义上归类管理,实际上在静态方法中访问不了类或实例中的任何属性
@staticmethod # 变成静态方法之后该方法就和类没什么关系了,就只是相当于一个单纯的函数,
def eat(self): # 并且没法使用类里面的变量了,但是可以使用自己的变量
# def eat(self, food):
# print("%s is eating %s..."%(self.name,food))
print("%s is eating %s..." % ("ddd", "sss")) d = Dog("zhangsan")
d.eat("baozi")

二、类方法

和静态方法一样,用的地方不是很多

class Dog(object):

    n = "ddd"  # 类变量
def __init__(self,name):
self.name = name # 类方法:无论实例变量怎么改,都是依据类变量来变化和静态方法一样 基本用不到
@classmethod # 类方法只能访问类变量,不能访问实例变量
def eat(self,food): # 实例变量
print("%s is eating %s..."%(self.n,food)) d = Dog("zhangsan") # 因为类方法只能访问类变量,所以无论该参数是什么,结果都是'ddd'
d.eat("baozi")

三、属性方法

属性方法的使用有实例,但是用的地方也不是很多

class Dog(object):

    def __init__(self,name):
self.name = name
self.__food = None # 属性方法: 把一个方法变成一个静态属性,就不能再调用了
# 隐藏了方法,对用户来说就是提供了一个API,实现就一步
@property
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 @eat.deleter # 可以通过此方法删掉属性
def eat(self):
del self.__food
print("删完了") d = Dog("zhansgan")
# d.eat() # 这是不行的,因为静态方法变成属性之后就不能在调用了
d.eat # 只能以方法的形式来调用,就不能传参数了 del d.eat # 如果不通过@eat.deleter,这个操作是没用的
d.eat # 报错之后说明属性通过@eat.deleter得到了删除

属性方法的使用可以结合下面的实例来理解:


class Flight(object):
def __init__(self,name):
self.flight_name = name def checking_status(self):
print("checking flight %s status " % self.flight_name)
return 0 @property
def flight_status(self):
status = self.checking_status()
if status == 0 :
print("flight got canceled...")
elif status == 1 :
print("flight is arrived...")
elif status == 2:
print("flight has departured already...")
else:
print("cannot confirm the flight status...,please check later")
@flight_status.setter
def flight_status(self,status):
print("flight %s has changed status to %s" %(self.flight_name,status))
f = Flight("CA980")
f.flight_status
f.flight_status = 2

福利:

1.在网上浏览到的关于几种方法更好的解释详情请见:https://www.cnblogs.com/wcwnina/p/8644892.html

2.不能获得的,这个和变量的生命周期有关,一个方法中的一个变量的生命周期是从它在这个方法中声明开始,到这个方法调用完毕时结束。

因此你在类A中的方法a中无法调用类B中的方法b中的变量var_b,因为这个变量在这个时间还没有被创建。

python中的静态方法、类方法、属性方法(福利:关于几种方法更好的解释)的更多相关文章

  1. python中打印金字塔和九九乘法表的几种方法

    # 打印九九乘法表for i in range(1,10): for j in range(1,i+1): # x=i*j # print(i,'*',j,'=',x,end=' ') print(' ...

  2. Python中如何获取类属性的列表

    这篇文章主要给大家介绍了在Python中如何获取类属性的列表,文中通过示例代码介绍的很详细,相信对大家的学习或者工作具有一定的参考借鉴价值,有需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近工作 ...

  3. VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法

    原文:VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/ar ...

  4. Win7系统与它的Virtualbox中安装的Ubuntu14.04共享信息的几种方法

    虚拟机是每一个程序猿必备的工具.本文依据最新版VirtualBox用户手冊的提示,通过自己的亲自实践,给出了Win7系统与执行在当中的VirtualBox 5.0.2中的Ubuntu 14.04共享信 ...

  5. 【转】Linux 中清空或删除大文件内容的五种方法(truncate 命令清空文件)

    原文: http://www.jb51.net/article/100462.htm truncate -s 0 access.log -------------------------------- ...

  6. 从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接)

    从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接) 一.总结 一句话总结:最好的是这个:"SELECT * FROM table WHERE id >= (( ...

  7. python静态方法类方法属性方法

    Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问 ...

  8. python中的静态方法和类方法

    在python中,各种方法的定义如下所示: class MyClass(object): #在类中定义普通方法,在定义普通方法的时候,必须添加self def foo(self,x): print & ...

  9. 在python中使用静态方法staticmethod

    静态方法: 静态方法是类中的函数,不需要实例.静态方法主要是用来存放逻辑性的代码,主要是一些逻辑属于类,但是和类本身没有交互,即在静态方法中,不会涉及到类中的方法和属性的操作.可以理解为将静态方法存在 ...

随机推荐

  1. Python 3 实现色情图片识别

    Python 3 实现色情图片识别 项目简介 项目内容 本实验将使用 Python3 去识别图片是否为色情图片,我们会使用到 PIL 这个图片处理库,会编写算法来划分图像的皮肤区域. 项目知识点 Py ...

  2. springboot 事务回滚

    在springboot中,使用事务回滚时,添加@Transactional注解,然后在try-catch块中,发生异常时,在catch中 添加 TransactionAspectSupport.cur ...

  3. 移动端(微信等)使用 vConsole 调试 console

    参考链接:https://blog.csdn.net/m0_37036014/article/details/80113635

  4. tf.argmax()以及axis解析

    首先,明确一点,tf.argmax可以认为就是np.argmax.tensorflow使用numpy实现的这个API.    简单的说,tf.argmax就是返回最大的那个数值所在的下标.    这个 ...

  5. uniGUI试用笔记(七)

    uniGUI的文件下载由于TUniSession的存在而变得非常简单,最典型的一个例子就是将列表中的所有数据导出到Excel中.服务器上采用TMS FlexCel控件,先将数据集中的记录导入到Exce ...

  6. thinkphp如何省略index.php

    省略index.php叫做 伪静态化; 共有四个步骤: MariaDB[(none)]: 表示, 目前没有选择/使用 任何数据库. 如果use了数据库, 会提示: MariaDB[mysql]... ...

  7. Git 命令收集

    目录 1.清理恢复 2.回滚,reset与revert的区别 3.merge,rebase,cherry-pick区别 4.删除不存在对应远程分支的本地分支 5.git pull,git push 报 ...

  8. Linux配置ssh服务和XShell连接Linux

    SSH服务查看和安装,配置: https://www.cnblogs.com/qiuqiuqiu/p/6445426.html https://www.cnblogs.com/yunweis/p/77 ...

  9. Calculate difference between consecutive data points in a column from a file

    cat > temp0015101269125  awk 'p{print $0-p}{p=$0}' temp00152-633-7 REF: https://www.unix.com/shel ...

  10. SQLServer2014 安装错误:等待数据库引擎恢复句柄失败

    查了很多资料最后靠百度百科里的一票报道彻底解决困难.在次发表一下以便给后人排忧解难 已下为百度连接 https://jingyan.baidu.com/article/7908e85cb24c19af ...