本篇将介绍Python 类的成员、类成员修饰符、类的特殊成员。

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

1、字段:

也可理解为变量,分为:

普通字段:保存在对象中,访问时通过“对象.字段名”访问。

静态字段:保存在类中,访问时通过“类.字段名”访问。

例子:class Person(object): #继承object类说明是一个新式类

country = 'China' #静态字段

def __init__(self,name):

print 'Person build self.name'

self.name = name #普通字段

p1 = Person('lily')

print p1.name #对象.字段访问普通字段

print Person.country #类.字段访问静态字段

#执行结果:

Person build self.name

lily

China

2、方法:

也可理解为函数,分为:

普通方法:由对象调用,至少有一个self参数,必须先创建对象才能执行,执行方式为:对象.方法

静态方法:由类调用,参数任意,定义方式是在方法上加一个staticmethod装饰器,其实就是通过面向对象的方式来定义函数。执行方式为:类.方法

类方法:由类调用,至少有一个cls参数,定义方式是在方法上加一个classmethod装饰器。执行方式为:类.方法

例子:class Person(object):

country = 'China'

def __init__(self,name):

print 'Person build self.name'

self.name = name

def say(self): #定义普通方法,至少有一个self参数

print 'Normal say: %s'%self.name

@staticmethod

def static_say(name): #定义静态方法,参数任意

print 'Static say: %s'%name

@classmethod

def class_say(cls,name): #定义类方法,至少有一个cls参数

print 'Class say: %s'%name

#调用普通方法

p1 = Person('Lily')

p1.say()

#调用静态方法

Person.static_say('Lucy')

#调用类方法

Person.class_say('Lilei')

#执行结果

Person build self.name

Normal say: Lily

Static say: Lucy

Class say: Lilei

3、属性:

作用就是把普通方法伪装成字段,定义方式为在普通方法上加一个property装饰器,仅有一个self参数,调用时无须括号。

例子:class Person(object):

country = 'China'

def __init__(self,name):

print 'Person build self.name'

self.name = name

def say1(self): #普通方法

print 'Say1: %s'%self.name

@property

def say2(self): #定义属性

return 'Say2: %s'%self.name

p1 = Person('Lily')

p1.say1() #普通方法调用方式

ret = p1.say2 #属性调用方式

print ret

#运行结果:

Person build self.name

Say1: Lily

Say2: Lily

类成员修饰符

对每一个类的成员而言都有两种形式:公有成员、私有成员

公有成员:任何地方都能访问

私有成员:只有在类的内部才能访问,定义方式为命名时,前两个字符为下划线,如 "__test"

例子:class Person(object):

country = 'China' #静态字段,属于公有成员

__planet = 'Earth' #静态字段,属于私有成员

def __init__(self,name):

print 'Person build self.name'

self.name = name

def say(self):

print 'The planet is %s'%Person.__planet #在类的内部访问私有静态字段

p1 = Person('Nothing')

p1.say()

print p1.country #访问公有静态字段

print p1.__planet #访问私有静态字段

#执行结果:

Person build self.name

The planet is Earth #在类的内部可以访问

print p1.__planet

China #外部可以访问公有静态字段

AttributeError: 'Person' object has no attribute '__planet' #外部无法访问私有静态字段

类的特殊成员(详细用法例子后期补上):

__doc__ 表示类的描述信息

__module__ 表示当前操作的对象在那个模块

__class__ 表示当前操作的对象的类是什么

__init__ 构造方法,通过类创建对象时,自动触发执行

__call__ 对象后面加括号,触发执行。

__dict__ 类或对象中的所有成员

__str__ 如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。

python @修饰符_Python基础(面向对象之类成员与修饰符)相关推荐

  1. Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python

    Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python? 人生苦短,我用Python!!!短短几个字,现在在各大学习类平台随处 ...

  2. python基础程序设计与面向对象程序设计_python基础——面向对象的程序设计

    python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...

  3. python对象属性在引用时前面需要加()_python基础-面向对象进阶

    实现授权的关键点就是覆盖__getattr__方法 1.通过触发__getattr__方法,找到read方法 示例1: 1 importtime2 classFileHandle:3 def __in ...

  4. python http模块_python 基础之http,os模块,正则

    os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd:得 ...

  5. cpython python 区别面试_python基础教程之千万不要错过这几道Python面试题

    第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...

  6. python的基本原理_python基础1(理论基础)

    1.python是什么语言 2.python的发展史 3.python2与python3的区别 4.python的语言类型 5.python的优缺点 6.IDLE是什么 7.变量是什么 一.pytho ...

  7. python数据分析知识点_Python基础知识点总结:数据

    首先, 什么是Python? 用python作者Guido van Rossum自己的话来说,Python是这样的一门语言: 它是一门高级编程语言, 它的核心设计理念是让所有代码变得更易阅读,并给开发 ...

  8. python 美化输出_python基础_格式化输出(%用法和format用法)

    目录 %用法 1.整数的输出 %o -- oct 八进制 %d -- dec 十进制 %x -- hex 十六进制 1 >>> print('%o' % 20)2 24 3 > ...

  9. python程序开发的各个阶段_python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象...

    抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于 绘程序结构,从而实现这种模型.抽象不仅包括这种模型的数据属性,还定义了这些数据的接口. 对某种抽象的实现就是对此数据 ...

最新文章

  1. 【坐在马桶上看算法】排序总结:小哼买书
  2. LeetCode 496. 下一个更大元素 I 解题思路及C++实现
  3. python 3.0 print_Python 3.x 新特性及10大变化
  4. access vba表字段_Access获取表字段的所有属性信息
  5. 通过路由进行参数的传递(方法一)
  6. mysql语句编码_使用SQL语句操作MYSQL字符编码
  7. 怎么把一个控件放到tab页面上去?_C/C++应用无障碍化如何支持Tab键浏览
  8. Badboy录制测试脚本
  9. python 只取年月日 字符串_Python基础:数据类型和变量amp;字符串和编码
  10. python是什么类型的语言-python到底是什么类型的语言
  11. 线程中消费者生产者的实例代码(synchronized关键字)
  12. Objective C中数组排序几种情况的总结
  13. java连接数据库驱动代码综合共享
  14. c语言文件归档,Go语言tar归档文件的读写操作
  15. 统计学(贾俊平《第七版》)知识总结
  16. 微信红包c语言程序,微信抢红包软件的C语言原理
  17. ARFoundation系列讲解 - 66 AR虚拟试戴
  18. IPETRONIK为您提供专业化的数据采集软件IPEmotion进行声学采集与分析
  19. android抓取日志,Android抓取所有日志
  20. linux 中qq的安装程序,linux下的QQ安装、使用方法

热门文章

  1. Web开发-数据格式选择
  2. 压铸行业龙头广东鸿图携手用友U9实现数智化升级
  3. python 笔记 之 requests获取网络数据
  4. Zookeeper-Zookeeper leader选举
  5. C++ STL 总结
  6. 用JAVA日志来写诗
  7. 对tableView三种计算动态行高方法的分析
  8. .net与mono的那些事
  9. ubuntu共享无线链接
  10. ABAP:参数输入屏幕SELECTION-SCREEN中的事件