python中表示类的公有成员_Python面向对象 | 类的成员
一. 细分类的组成成员
之前咱们讲过类大致分两块区域,静态字段部分和方法部分。
每个区域详细划分又可以分为:
classA:
company= ‘阿里巴巴‘ #静态变量(静态字段)
__tel = ‘xxxxxxx‘ #私有静态变量(私有静态字段)
def __init__(self,name,age): #特殊方法(初始化方法)
self.name = name #对象属性(普通字段)
self.__age = age #私有对象属性(私有普通字段)
def func1(self): #普通方法
pass
def __func(self): #私有方法
print(666)
@classmethod#类方法
defclass_func(cls):"""定义类方法,至少有一个cls参数"""
print(‘类方法‘)
@staticmethod#静态方法
defstatic_func():"""定义静态方法 ,无默认参数"""
print(‘静态方法‘)
@property#属性
defprop(self):pass
二. 类的私有成员
对于每一个类的成员而言都有两种形式:
公有成员,在任何地方都能访问
私有成员,只有在类的内部才能方法
私有成员和公有成员的访问限制不同
1. 属性
静态属性
对象属性
静态字段(静态属性)
公有静态字段:类可以访问;类内部可以访问;派生类中可以访问
私有静态字段:仅类内部可以访问;
公有静态属性(字段)
classC:
name= "公有静态字段"
deffunc(self):printC.nameclassD(C):defshow(self):printC.name
C.name#类访问
obj=C()
obj.func()#类内部可以访问
obj_son=D()
obj_son.show()#派生类中可以访问
私有静态属性(字段)
classC:__name = "私有静态字段"
deffunc(self):print C.__name
classD(C):defshow(self):print C.__nameC.__name #不可在外部访问
obj=C()
obj.__name #不可在外部访问
obj.func() #类内部可以访问
obj_son=D()
obj_son.show()#不可在派生类中可以访问
公有对象属性
classC:def __init__(self):
self.foo= "公有字段"
deffunc(self):print self.foo #类内部访问
classD(C):defshow(self):printself.foo # 派生类中访问
obj=C()
obj.foo#通过对象访问
obj.func() #类内部访问
obj_son=D();
obj_son.show()#派生类中访问
私有对象属性
classC:def __init__(self):
self.__foo = "私有字段"
deffunc(self):print self.foo #类内部访问
classD(C):defshow(self):printself.foo # 派生类中访问
obj=C()
obj.__foo #通过对象访问 ==> 错误
obj.func() #类内部访问 ==> 正确
obj_son=D();
obj_son.show()#派生类中访问 ==> 错误
2. 方法
公有方法:对象可以访问;类内部可以访问;派生类中可以访问
私有方法:仅类内部可以访问;
(1)公有方法
classC:def __init__(self):pass
defadd(self):print(‘in C‘)classD(C):defshow(self):print(‘in D‘)deffunc(self):
self.show()
obj=D()
obj.show()#通过对象访问
obj.func() #类内部访问
obj.add() #派生类中访问
(2)私有方法
classC:def __init__(self):pass
def __add(self):print(‘in C‘)classD(C):def __show(self):print(‘in D‘)deffunc(self):
self.__show()
obj=D()
obj.__show() #通过不能对象访问
obj.func() #类内部可以访问
obj.__add() #派生类中不能访问
总结:对于这些私有成员来说,他们只能在类的内部使用,不能再类的外部以及派生类中使用.
非要访问私有成员的话,可以通过 对象._类__属性名,但是绝对不允许!!!为什么可以通过._类__私有成员名访问呢?因为类在创建时,如果遇到了私有成员(包括私有静态字段,私有普通字段,私有方法)它会将其保存在内存时自动在前面加上_类名.
三. 类的其他成员
这里的其他成员主要就是类方法:
方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。
实例方法
定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
调用:只能由实例对象调用。
类方法
定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
调用:实例对象和类对象都可以调用。
静态方法
定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
调用:实例对象和类对象都可以调用。
双下方法(后面会讲到)
定义:双下方法是特殊方法,他是解释器提供的 由爽下划线加方法名加爽下划线 __方法名__的具有特殊意义的方法,双下方法主要是python源码程序员使用的,
我们在开发中尽量不要使用双下方法,但是深入研究双下方法,更有益于我们阅读源码。
调用:不同的双下方法有不同的触发方式,就好比盗墓时触发的机关一样,不知不觉就触发了双下方法,例如:__init__
python中表示类的公有成员_Python面向对象 | 类的成员相关推荐
- [转载] python中for语句用法_详解Python中for循环的使用_python
参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...
- python中try...except的用法_python try...except语句、自定义异常、raise语句使用实例(异常处理的三种方法)...
异常处理,在编程中是必不可少的.错误难免会发生,用户不可能完全按照开发者的意愿行事,也有一些不可预知的错误,如网络请求等. 而程序一旦遇到异常,就会被终止,并且由底层抛出错误栈,无法按照计划顺利执行. ...
- python 中关于无法导入自己写的类。解决方法
python 中关于无法导入自己写的类.解决方法 参考文章: (1)python 中关于无法导入自己写的类.解决方法 (2)https://www.cnblogs.com/jc-home/p/1209 ...
- python中模块是什么意思_Python中的模块是什么?3分钟搞懂Python中的模块问题
Python 中的模块是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,模块让你能够有逻辑地组织你的 Python 代码段.把相关的代码分配到一个模块里能 ...
- python中oo是什么意思_python中的OO
写给自己的备忘,很浅显,可能只是句法方面的事,不涉及OO思想之类的,因为OO思想是共通的,并没有python的OO思想一说 PS 示例代码来自<python简明教程> 继承 python中 ...
- python中for语句用法_详解Python中for循环的使用_python
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...
- python中异或怎么算_python 异或运算的前提_异或运算公式
Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...
- python中如何创建类的对象_python面向对象中如何建立具体的对象?
我们现在眼前所能看到的事物,都是具体的对象.很多小伙伴在面向对象中创建对象,其实都停留在对象名称的建立,计算机中并没有具体对象的描述属性.我们想要使用python中的类,建立的对象就需要是具体的.下面 ...
- python面向对象类创建人物类包含姓名、职业_python面向对象类
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...
最新文章
- Apache+php+tomcat+mysqlon linxu
- 【DND图形库】四、文本绘制和按键检测
- 昨天登陆页面,无法进入后台,今天攻克了
- .NET Framework 4.8发布
- 前端学习(905):js执行机制
- BugkuCTF-MISC题telnet
- 001mongodb数据库介绍002mongodb的增删改查003数据导入导出
- 使用git在本地电脑与远程GitHub/gitlub库中clone别人的github上的远程仓库代码,找资源
- 【java】Java 动态调试技术原理及实践
- qt widget设置边框_Qt开源作品16-通用无边框拖动拉伸
- android 6.0 蓝牙进程,Android6.0-蓝牙权限问题
- 启动工程Ehcache报错
- Python学习笔记之 循环,列表生成式,生成器,迭代器
- Xshell6、Xftp6【官方免费版】下载
- UPS电源扩展功能一UPS干节点通讯接口扩展板,你了解吗?
- PHP 微信公众号和html5接入微信支付
- IPA第八届少儿模特明星盛典 福州赛区 初赛圆满收官
- 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法代码讲解+资源打包下载】...
- 教你一波Lucas(卢卡斯)定理在数论解题中的应用
- 使用python语言调用科大讯飞离线语音合成
热门文章
- 关于函数泰勒展开的关键知识点深入分析
- 神经网络怎么解决过拟合,解决神经网络过拟合
- 机器学习实战:逻辑回归(2)-从疝气病症预测病马的死亡率
- 不用PS怎样修改电脑图片分辨率?试试这个方法
- adaboost算法的matlab实现,Adaboost算法
- HTML手机自动连接问题,airpods自动连接不上怎么办_airpods打开后不自动连接的解决方法...
- 基于asp.net328驾校考试车管所违章查询系统
- java 新浪股票接口api_[Java教程]【API】新浪天气接口 Beta
- Broken Necklace ( USACO1.1.4 破碎的项链)
- PHP_VERSION的意思,php指的是_PHP_VERSION指什么