python-->基础-->005-->类的三大成员:方法+属性+字段
---恢复内容开始---
一、方法
python的方法中分为三种方法:
静态方法
动态方法(普通方法)
类方法
其中常用的方法为:静态方法和动态方法
class MyClass:
def __init__(self, name):
self.name = name # 动态方法
def show(self):
return self.name # 静态方法
@staticmethod
def detail(name):
print '%s is good person.' %name # 类方法
@classmethod
def show_detail(cls):
cls.detail('Kevin') if __name__ == "__main__":
object = MyClass("Jack")
p_name = object.show()
MyClass.detail(p_name)
MyClass.show_detail()
方法调用遵循的规则:
1.动态方法由对象调用;
2.静态方法由类调用;
3.类方法,属于静态方法的一种,通过类来调用,执行的时候会自动将类名传递进去,因此要有一个默认的接收参数.
说明:
什么是对象?对类进行实例化后即为对象,如上述代码,object = MyClass("Jack"),对MyClass这个类进行实例化后,产生了object这个对象。
什么是类?通过class定义出来的,如上述代码,MyClass即为定义出来的类。
什么是动态方法?动态方法,我们常用的通过def定义出来的方法,即为动态方法(也叫做普通方法),注意动态方法前面是没有staticmethod这个装饰器装饰的。
什么是静态方法?静态方法,与动态方法的最大区别是,有staticmethod这个装饰器对方法进行装饰,可以理解为动态方法加个staticmethodz这个装饰器进行装饰后,即为静态方法。
二、字段
字段的分类:
动态字段;
静态字段;
私有字段;
class MyClass:
# 静态字段,属于类,多个对象共用一个静态字段
leader = "abuve" def __init__(self):
# 动态字段,属于对象,也可以叫普通的字段,每个对象都会有自己独有的动态字段
self.name = "kevin"
字段的调用访问遵循的规则:
1.静态字段,属于类,通过类对静态字段进行调用访问;
2.动态字段,属于方法,通过方法对动态字段进行调用访问。
class Company:
company_name = "Center" def __init__(self, dept, leader):
self.dept = dept
self.leader = leader def ... if __name__ == "__main__"
it_dept = Company("IT", "Abuve")
hr_dept = Company("HR", "Kevin")
对于上述代码,我们通过下面的方式访问其中的字段数据:
print it_dept.dept
print hr_dept.leader
print Company.company_name
3.私有字段,私有字段,类不能直接对私有字段进行调用访问,而是通过调用私有字段对应的方法的方式来调用访问私有字段。
class MyClass:
def __init__(self, name):
self.__name = name def show(self):
print self.__name if __name__ == "__main__":
object = MyClass("Abuve")
# 通过对象无法访问到私有字段
print object.__name
# 私有字段通过类的内部方法访问
object.show()
# 通过类名前加入下划线的方式同样可以访问到
print object._MyClass__name
三、属性
class PageSet:
def __init__(self, count, page_size):
self.count = count
self.page_size = page_size # 通过装饰器将page_num变为属性,对象调用时不需要再加括号
@property
def page_num(self):
page_count, remainder = divmod(self.count, self.page_size)
if remainder == 0:
return page_count
else:
return page_count + 1 if __name__ == "__main__":
# 传入条目总数,以及单页size大小
page_tools = PageSet(108, 10)
# 像访问字段一样执行了page_num方法
print page_tools.page_num
上面的代码实现了一个分页设置,我们通过装饰器property将page_num方法变为属性,那么该方法在被对象调用时,就像访问字段一样,不需要再加括号了。此时我们只实现了通过字段的方式来访问方法
我们对属性可以进行:删除和赋值操作
class PageSet:
def __init__(self, count, page_size):
self.count = count
self.page_size = page_size @property
def page_num(self):
page_count, remainder = divmod(self.count, self.page_size)
if remainder == 0:
return page_count
else:
return page_count + 1 @page_num.setter
def page_num(self, value):
print value
print 'This is set function.' @page_num.deleter
def page_num(self):
print 'This is delete function.' if __name__ == "__main__":
page_tools = PageSet(108, 10)
# 调用property修饰属性
page_tools.page_num
# 调用page_num.setter修饰属性
page_tools.page_num = 12
# 调用page_num.deleter修饰属性
del page_tools.page_num
python-->基础-->005-->类的三大成员:方法+属性+字段的更多相关文章
- 二十六. Python基础(26)--类的内置特殊属性和方法
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...
- Python 基础 面向对象之二 三大特性
Python 基础 面向对象之二 三大特性 上一篇主要介绍了Python中,面向对象的类和对象的定义及实例的简单应用,本篇继续接着上篇来谈,在这一篇中我们重点要谈及的内容有:Python 类的成员.成 ...
- python基础——枚举类
python基础——枚举类 当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12 好处是简单 ...
- python基础——定制类
python基础——定制类 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方 ...
- Python基础-类的探讨(class)
Python基础-类的探讨(class) 我们下面的探讨基于Python3,我实际测试使用的是Python3.2,Python3与Python2在类函数的类型上做了改变 1,类定义语法 Python ...
- Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系)
Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系) 在面向对象的中,类与类之间存在三种关系:依赖关系.组合关系.继承关系. 1.依赖关系:将一个类的类名或对象当做参数传递给另一个函数被 ...
- Python基础------列表,元组的调用方法
Python基础------列表,元组的调用方法@@@ 一. 列表 Python中的列表和歌曲列表类似,也是由一系列的按特定顺序排列的元素组成的,在内容上,可以将整数,实数,字符串,列表,元组等任何类 ...
- Qt+QGIS二次开发:自定义类实现查询矢量数据的属性字段值(图查属性)
在GIS领域,有两种重要的查询操作,图查属性和属性查图. 本文主要介绍如何在QGIS中通过从QgsMapToolIdentify中派生自定义类实现查询矢量数据的属性字段值(图查属性). 重点参考资料: ...
- python基础(26):类的成员(字段、方法、属性)
1. 字段 字段:包括普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同. 普通字段属于对象 静态字段属于类 字段的定义和使用: class Province: # ...
- python基础(27):类成员的修饰符、类的特殊成员
1. 类成员的修饰符 类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的定义不同:私 ...
随机推荐
- 用PHP向mysql添加数据
<?php $name=$_POST['name']; $gender = $_POST['gender']; $age=$_POST['age']; #连接到数据库 $link = mysql ...
- 在Ubuntu上安装Mysql For Python
安装: 首先安装pip,并且把pip更新到最小版本 apt-get install python-pip pip install -U pip 安装mysql开发包 apt-get install p ...
- iOS返回一个前面没有0,小数点后保留两位的数字字符串
/* * 处理一个数字加小数点的字符串,前面无0,保留两位.网上有循环截取的方法,如果数字过长,浪费内存,这个方法在优化内存的基础上设计的. */ -(NSString*)getTheCorrectN ...
- Caffe应用篇----文件格式转换
网友文章: 我们手中有的一般都是图片数据,jpg.bmp格式等,但caffe常使用的数据是db格式(leveldb/lmdb),因此首先我们要将自己数据转换成caffe可运行的格式文件.别捉鸡,caf ...
- UI颜色值
UI颜色值 http://xh.5156edu.com/page/z1015m9220j18754.html
- python容器类型:列表,字典,集合等
容器的概念我是从C++的STL中学到的 什么是容器? 容器是用来存储和组织其他对象的对象. 也就是说容器里面可以放很多东西,这些东西可以是字符串,可以是整数,可以是自定义类型,然后把这些东西有组织的存 ...
- 学习计划-----java初级工程师
目标: 1.具备扎实的JAVA基础,对数据结构.基本算法熟练掌握,并具备基本的算法设计能力. 2.前台:精通JSP/Servlet.HTML.JavaScript.Ajax.Jquery, XML.J ...
- [转载]jquery中attr和prop的区别
在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: ...
- assert的用法
assert用来调试时,判断一个语句是否为真. assert是宏,而不是函数.在C的assert.h 头文件中. assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么 ...
- Res_Orders_01
一.燃尽图展示 二.项目进展 1.讨论选题内容 2.确定项目的版本(Web版) 3.讨论能达到的效果和内容 4.确定编程方面的难点 5.开始制作大概的框架 三.遇到问题 1.不知道怎么部署能达到最好的 ...