Python 类的成员、成员修饰符、类的特殊成员。

Python 类的成员

类的成员可以分为三大类: 字段、方法和属性。

 #注:所有成员中,只有普通字段的内容保存对象中,即:
#根据此类创建了多少对象,在内存中就有多少个普通字段。
#而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份。

一、字段

字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,

  • 普通字段属于对象
  • 静态字段属于类
class Student:

    #静态字段
location = 'China' #初始化,也称构造方法
def __init__(self, name, age):
self.name = name
self.age = age #直接访问普通字段
stu = student('Steven', 16)
stu.name
#直接访问静态字段
Student.location #(类名.字段名)
stu.location #(对象名.字段名)

  普通字段需要通过对象来访问
  静态字段不仅可以通过类访问,也可以通过对象来访问
  但普通字段和静态字段的归属是不同的。其在内容的存储方式类似下:

由上图可是:

  • 静态字段在内存中只保存一份
  • 普通字段在每个对象中都要保存一份

应用场景: 通过类创建对象时,如果每个对象都具有相同的字段,那么就使用静态字段

二、方法

方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。

普通方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self;
类方法:    由类调用; 至少一个cls参数;执行类方法时,自动将调用该方法的类复制给cls;
静态方法:由类调用;无默认参数;

import time
class TimeTest(object):
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day def trans(self): #普通方法
return self.year, self.month, self.day @classmethod #类方法
def check(cls, str_time):
''' 判断输入的字符串日期是否合法 '''
receive = cls(*str_time.split(','))
if int(receive.year) > 0 and (0 <= int(receive.month) <= 12) and (0 <= int(receive.day) <= 31):
return receive.trans()
else:
print('字符串日期不合法!') @staticmethod #静态方法
def showtime():
return time.strftime('%H:%M:%S', time.localtime())
t = TimeTest(2019, 1, 1)
nowTime = t.showtime()
print(nowTime)
print(t.check('2018,12,31')) #结果
22:07:10
('', '', '')

最新文章

  1. ImageView的scaleType详解
  2. List转换成json格式字符串,json格式字符串转换成list
  3. 在Filter 无法跳转地址
  4. poj2752 KMP
  5. DM 之 全解析
  6. TCP/IP详解学习笔记(10)-TCP连接的建立与中止
  7. C# zip/unzip with ICSharpCode.SharpZipLib
  8. 浅谈Xcode5和Xcode7在系统创建的文件夹和文件中的区别
  9. 计算几何模板 (bzoj 1336,poj 2451 ,poj3968)
  10. logfile提示stale错误解决方法
  11. 发现SQL Server惊天大秘密!!
  12. extjs底层源码实现继承分析
  13. 怎么理解js的面向对象编程
  14. JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序
  15. Java IO 之 BIO、NIO、AIO
  16. python 把类当作 装饰器
  17. 什么是pear的channel?
  18. Dubbo OPS工具——dubbo-admin &amp; dubbo-monitor
  19. POI操作word和html相互转化
  20. 线程、进程、daemon、GIL锁、线程锁、递归锁、信号量、计时器、事件、队列、多进程

热门文章

  1. E20180712-hm
  2. layui icon样式1到7
  3. [Xcode 实际操作]九、实用进阶-(23)多个Storyboard故事板中的页面跳转
  4. C 语言实例 - 计算 int, float, double 和 char 字节大小
  5. Jquery | 基础 | 项目实践
  6. bzoj 2441 [中山市选2011]小W的问题
  7. GYM 101889E(dp)
  8. 538 Convert BST to Greater Tree 把二叉搜索树转换为累加树
  9. Storm编程入门API系列之Storm的Topology默认Workers、默认executors和默认tasks数目
  10. (转)C#文件操作大全