python类详解
类
封装 继承 多态
一静态属性
1、静态变量和静态方法都属于类的静态成员,它们与普通的成员变量和成员方法不同,静态变量和静态方法只属于定义它们的类,而不属于某一个对象。
2、静态变量和静态方法都可以通过类名和对象进行访问。
二静态方法
1、静态方法中不需要传入self参数,因此无法访问在静态方法中访问静态实例变量。
》、静态方法中不可以直接访问类的静态变量,但可以通过类名引用静态变量。
3、可以通过装饰符定义静态变量。
三 类方法
类方法的第一个参数应该是 cls
由 哪一个类 调用的方法,方法内的 cls 就是 哪一个类的引用
这个参数和 实例方法 的第一个参数是 self 类似
提示 使用其他名称也可以,不过习惯使用 cls
通过 类名. 调用 类方法,调用方法时,不需要传递 cls 参数
在方法内部
可以通过 cls. 访问类的属性
也可以通过 cls. 调用其他的类方法
————————————————
版权声明:本文为CSDN博主「jomes_wang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jomes_wang/article/details/111627954
四类属性
1类属性 就是给 类对象 中定义的 属性
2通常用来记录 与这个类相关 的特征
3类属性 不会用于记录 具体对象的特征
五私有方法
以 __两个下划线开头,声明该方法为私有方法,只能在类的内部调用 (类内部别的方法可以调用他),不能在类地外部调用。
六私有属性
*xx: 公有变量
_x: 单前置下划线,私有化属性或方法,from somemodule import 禁止导入,类对象和子类可以访问
_xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字
xx:单后置下划线,用于避免与Python关键词的冲突
通过name mangling(名字重整(目的就是以防子类意外重写基类的方法或者属性)如:_Class__object)机制就可以访问private了。
总结
属性;
1.类属性就是属于类所有,可以直接用类名.属性名直接调用,类的属性在内存中只有一份。实例属性就是在__init__()方法中初始化的属性;
2.实例属性属于类的对象所有,可以用对象名.属性名的形式进行调用,但是不能用类名.属性名进行调用 。因为实例属性只有在实例创建时,才会初始化创建。
3私有属性,一般属性的处理方式为:1.将属性定义为私有属性。2.添加一个可以调用的方法,供调用。
方法
1私有方法:以 __两个下划线开头,声明该方法为私有方法,只能在类的内部调用 (类内部别的方法可以调用他),不能在类地外部调用
2类方法的使用:是类所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数,也可以有别的参数。但是第一个必须是类对象,类似类中的def定义的普通方法第一个参数要是self一样的道理
# 类常用法
class A:
calss_attrution = 'arr of a' # 类属性
staticmethod.name="1"#静态属性
def __init__(sel):
_prapertyattr_='the propertyatt of a'#私有方法
print("这是基类init")
def run(self,num): #实例方法
print("基类走了%d" %num)
def speak(self,age):
print("基类 speak %d" %age)
@staticmethod
def satic_a(): #静态方法
print("A 的静态")
@classmethod
def calss_mathon(self): #类方法
print("the class mathod of a")
@property#相当于getter 和setter直接修改私有属性
def pre_a(self): #私有方法
print('the property of a')
class C(A): #继承
def __init__(self,name=None):
print('这是子类构造方法')
super(C, self).__init__()
self.name=name
print("重写init")
def speak(self):
print("从写基类方法")
class W(a,c):
pass
d=C()
d.run(22)
d.speak()
def a(cls):
print('nihao')
python类详解的更多相关文章
- Python 多进程 multiprocessing.Pool类详解
Python 多进程 multiprocessing.Pool类详解 https://blog.csdn.net/SeeTheWorld518/article/details/49639651
- [转] Python Traceback详解
追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a Python Traceback详解 刚接触Python的时候,简单的 ...
- Python Collections详解
Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...
- python多线程详解
目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 二.线程实现 threading模块 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 互斥锁 递归锁 信号量 ...
- 【python】详解事件驱动event实现
[python]详解事件驱动event实现 所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出). 1.脚本型:脚本型的程序包括最早的批处理文件以及使用Python做 ...
- 第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter
上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一. 案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...
- 第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样?
第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样? 一. 案例说明 我们上节提到了,使用property函数定义的属性不要与类内已经定义的普通实例变量重 ...
- 第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现
第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现 一. 案例说明 本节将通过一个案例介绍怎么使用property定义快捷的属性访问.案例中使用Rectan ...
- java之StringBuffer类详解
StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...
- java之AbstractStringBuilder类详解
目录 AbstractStringBuilder类 字段 构造器 方法 public abstract String toString() 扩充容量 void expandCapacity(in ...
随机推荐
- Unity C#代码入门
Unity C#代码入门 1. 脚本基本结构 1.1 unity生成的模板 using System.Collections; using System.Collections.Generic; us ...
- Yarn API
Yarn API: 1. 查询整个yarn集群指标: GET http://{cluster_domain_name}|{rm_ip:8088}/ws/v1/metrics 2. 查看指定队列的所有任 ...
- 解决Z490-A吹雪安装macOS Monterey随机重启
1.目前发现随机重启问题是板载网卡I225-v导致,需要去除以往的网卡的kext补丁: 2.去除补丁后发现网络连接识别成功,但是无法上网:这是因为网卡ID注入错误.需要将网卡ID设置为:F315868 ...
- Activity基础知识
Activity 一.Activity是什么 Activity是一种可以包含用户界面的组件,主要用于和用户进行交互.一个应用程序可以包含零个或多个活动. 二.活动的基本用法 1. 手动创建活动 打 ...
- 十大经典排序之基数排序(C++实现)
基数排序 也是采用分桶的思想,但是加入了按位比较的思想(可以理解为每位进行一次计数排序) 思路: 计算数列中最大位数 按位数循环处理每位的排序 代码实现: #include<iterator&g ...
- K-th occurrence (后缀自动机上合并权值线段树+树上倍增)
K-th occurrence (后缀自动机上合并权值线段树+树上倍增) You are given a string SSS consisting of only lowercase engli ...
- 题解,洛谷P3435
根据题意,分析如右图 显然,对于每个前缀,有这样的性质A==B==C,所以,周期最长则a最短,即求该字符串的最短公共前后缀.通过kmp算法中nex数组的迭代,很容易求得最短前后缀. for(int i ...
- 如何确保获取的输入为整数-C语言基础
这一篇探讨的是如何确保你输入的数据是一个整数.虽然标题用的是这个,但我其实真正想要探讨的内容是 "在程序调试的过程中,需要注意把输入缓存区中的上一次输入的残留信息清理干净,以免影响下一次的输 ...
- 发布订阅清理distribution未执行导致distribution库特别大处理办法
近期发现数据服务器中数据库所在盘被占用的特别严重,一个800G的盘只剩下不到100G,排除备份所占用的其他的空间竟然有400G被安装目录下的分发数据库distribution.MDF所占用. 分发数据 ...
- C/C++ 数据结构链式队列的定义与实现
#include <iostream> #include <Windows.h> using namespace std; typedef struct _QNode{ int ...