# 编辑者:闫龙
# 1.什么是绑定到对象的方法,如何定义,如何调用,给谁用?有什么特性
#在类中定义的(self)方法都是绑定到对象的方法
#定义
class a:
def b(self):#绑定到对象的方法
pass
#调用:
c = a()
c.b()#调用a类中绑定到对象c的b(self)方法
#既然是绑定到对象的方法,当然是给实例化之后的对象使用了
#当对象调用方法时,对象会将自己当做第一个参数传递给方法 # 2.什么是绑定到类的方法,如何定义,如何调用,给谁用?有什么特性
#静态方法和类方法都是绑定到类的方法
#静态方法定义:
class ClassStaticFunc:
@staticmethod#定义一个静态方法需要调用的装饰器staticmethod
def StaticFunc():#被staticmethod修饰过的StaticFunc方法就是一个静态方法
pass
#调用:
ClassStaticFunc.StaticFunc()#无需实例化直接类名打点儿调用类中的静态方法
#静态方法是让类去调用的方法
#需实例化直接类名打点儿调用类中的静态方法,静态方法可以被实例化的对象调用,但是一般不这么使用
#类方法定义:
class ClassFunc:
@classmethod#定义一个类方法需要调用的装饰器classmethod
def ClassMethod(cls):#被classmethod修饰过的ClassMethod方法就是一个类方法
pass
#调用:
ClassFunc.ClassMethod()#无需实例化直接类名打点儿调用类方法
#类方法顾名思义是与类绑定的方法,一定是给类调用的方法
#当类调用类方法时,会将当前调用方法的类当做第一个参数传递到方法中
# 3.什么是解除绑定的函数,如何定义,如何调用,给谁用?有什么特性
#定义在类的内部,并且被staticmethod修饰过的方法
#定义:
class NoBandFunc:
@staticmethod
def NoBang(a,b,c):
pass
#调用:
nbf = NoBandFunc.NoBang(1,2,3)
#or:
nbfs = NoBandFunc()
nbf1 = nbfs.NoBang(1,2,3)
#解除绑定方法不在自动传值 # 4.什么是property,如何定义,如何使用,给谁用,什么情况下应该将一个属性定义成property,有什么好处?
#是一个将方法隐藏变更调用方法的方式,让用户看起来是在调用属性而不是方法,property修饰过的方法,会产生该方法的setter,del方法用来修改和删除属性
#定义
class PropertyClass:
def __init__(self,name):
self.__Name = name
@property
def PropertyFunc(self):
print(self.__Name)
@PropertyFunc.setter
def PropertyFunc(self,name):
self.__Name = name
print(self.__Name)
@PropertyFunc.deleter
def PropertyFunc(self):
del self.__Name
#调用:
pc = PropertyClass("egon")
pc.PropertyFunc
pc.PropertyFunc("egon_SomeBody")
del pc.PropertyFunc
#一般在__属性的情况下使用property,这样可以有效的隐藏,展示,控制__属性对用户的影响

python概念-各类绑定的概念和property的变态一面的更多相关文章

  1. Python 3 集合基础和概念!

    Python 3 集合基础和概念! Python 3中,集合是无序的,所以不能进行切片和索引操作. 创建集合有两个方法:set()方法创建的集合是可变的,可被迭代的:frozenset()方法创建的集 ...

  2. Airflow Python工作流引擎的重要概念介绍

    Airflow Python工作流引擎的重要概念介绍 - watermelonbig的专栏 - CSDN博客https://blog.csdn.net/watermelonbig/article/de ...

  3. python之模块copy,了解概念即可

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块copy,了解概念即可 import copy #浅拷贝 #copy拷贝一个对象,但是对象 ...

  4. python 封装、绑定

    目录 python 封装.绑定 1.数据.方法的封装 2.隐藏属性 3.开放接口 4.绑定方法 1.对象的绑定 2.类的绑定(classmethod) 3.非绑定方法(staticmethod) 4. ...

  5. Python的名字绑定

    Python的名字绑定 在Python中,对象是通过名字进行关联和引用的.Python通过名字绑定操作来引入名字. Python中的所谓的代码块就是一段作为执行单元的程序.比如:模块.函数.类定义.在 ...

  6. python基础-abstractmethod、__属性、property、setter、deleter、classmethod、staticmethod

    python基础-abstractmethod.__属性.property.setter.deleter.classmethod.staticmethod

  7. 【Python开发】python发送各类邮件的方法

    转载: python发送各类邮件的主要方法 python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点. 一.相关模块介绍 发送 ...

  8. Python学习笔记_01:基本概念介绍

    目录 1.Python语言简介 2.Python中常用数据结构 2.1什么是列表? 2.2什么是元组? 2.3什么是字典? 2.4索引及分片 3.其它基本概念 3.1数据类型和变量 3.2生成器 3. ...

  9. Python面向对象之面向对象基本概念

    面向过程和面向对象概念 过程和函数:过程类似于函数,只能执行,但是没有返回结果:函数不仅能执行,还能返回结果. 面向过程和面向对象 基本概念 面向过程-怎么做 把完成某一个需求的所有步骤从头到尾逐步实 ...

随机推荐

  1. [百度贴吧]10GB 通信线缆

    现在,即使光纤通信能够带来最低延迟的优势,但是许多IT部门依然在10G以太网(10G bE)中使用铜缆布线,来实现交换机和交换机或者和服务器之间的连接.目前主要有两种主要的铜缆布线技术应用在10 Gb ...

  2. QTime的本质上是一个int,QDateTime本质上是一个qint64

    研究这个问题的起因发现使用<=比较时间的不准确,所以怀疑是一个浮点数(Delphi里的time就是一个浮点数).结果却发现是一个int class Q_CORE_EXPORT QTime { e ...

  3. rocketmq 主机负载异常飙高问题的解决

    最近在部署rocketmq到物理机时, 发现并解决了一个主机Load异常飙高的问题, 觉得有必要记录一下. 我们采用了rocketmq(https://github.com/alibaba/Rocke ...

  4. Huge Mods UVA - 10692(指数循环节)

    题意: 输入正整数a1,a2,a3..an和模m,求a1^a2^...^an mod m 解析: #include <iostream> #include <cstdio> # ...

  5. 【刷题】BZOJ 3669 [Noi2014]魔法森林

    Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...

  6. [洛谷P5081]Tweetuzki 爱取球

    题目大意:有$n$个球,每一次取一个球然后放回,问期望多少次取遍所有球 题解:令$f_i$表示已经取了$i$种球,还要取的次数的期望.$f_i=\dfrac in(f_i+1)+\dfrac{n-i} ...

  7. Linux进程间通信(消息队列/信号量+共享内存)

    写在前面 不得不说,Deadline果真是第一生产力.不过做出来的东西真的是不堪入目,于是又花了一早上重写代码. 实验内容 进程通信的邮箱方式由操作系统提供形如 send()和 receive()的系 ...

  8. 【BZOJ3518】点组计数

    Description 平面上摆放着一个\(n*m\)的点阵(下图所示是一个3*4的点阵).Curimit想知道有多少三点组(a,b,c)满足以a,b,c三点共线.这里a,b,c是不同的3个点,其顺序 ...

  9. Vulkan vs OpenGL ES

    Vulkan 简介 Vulkan是一个免费开放的.跨平台的.底层的图形API,在一定程度上比AMD Mantle.微软DirectX 12.苹果Metal更值得开发者关注. Vulkan的最大任务不是 ...

  10. MVC使用jQuery从视图向控制器传递Model的2种方法

    http://blog.csdn.net/make1828/article/details/29846003 using System.ComponentModel.DataAnnotations; ...