封装 继承 多态
一静态属性
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类详解的更多相关文章

  1. Python 多进程 multiprocessing.Pool类详解

    Python 多进程 multiprocessing.Pool类详解 https://blog.csdn.net/SeeTheWorld518/article/details/49639651

  2. [转] Python Traceback详解

    追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a   Python Traceback详解   刚接触Python的时候,简单的 ...

  3. Python Collections详解

    Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...

  4. python多线程详解

    目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 二.线程实现 threading模块 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 互斥锁 递归锁 信号量 ...

  5. 【python】详解事件驱动event实现

    [python]详解事件驱动event实现 所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出). 1.脚本型:脚本型的程序包括最早的批处理文件以及使用Python做 ...

  6. 第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter

    上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一.    案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...

  7. 第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样?

    第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样? 一.    案例说明 我们上节提到了,使用property函数定义的属性不要与类内已经定义的普通实例变量重 ...

  8. 第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现

    第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现 一.    案例说明 本节将通过一个案例介绍怎么使用property定义快捷的属性访问.案例中使用Rectan ...

  9. java之StringBuffer类详解

    StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...

  10. java之AbstractStringBuilder类详解

    目录 AbstractStringBuilder类 字段 构造器 方法   public abstract String toString() 扩充容量 void  expandCapacity(in ...

随机推荐

  1. CAJ转换为PDF

    方法就是下载一个CAJViewer和一个PDF虚拟打印机 CAJViewer下载: http://cajviewer.cnki.net/ 我下载了7.2版本 PDF虚拟打印机可以是Adobe acro ...

  2. js 数组对象中每一项对象属性比较大小与计算数组对象属性和

    // 数组对象排序方法   export function compare(property) {       return function (a, b) {         const value ...

  3. linux 系统安装配置jdk + mysql + redis (离线状态)

    ​ 系统版本:centos7.7 环境搭建(离线状态) 安装java环境 安装配置mysql数据库 安装配置redis数据库 安装java环境 jdk版本:jdk-8u5-linux-x64.rpm ...

  4. javascript原型,继承

    //普通对象 //函数对象(有原型 prototy 的属性) //原型的应用 继承 function Amial(){ this.type = '小于' } function cat(name){ t ...

  5. 划分数据集时出现PermissionError: [Errno 13] Permission denied:

    PermissionError: [Errno 13] Permission denied: [errno 13]权限被拒绝 错误的原因可能是文件找不到,或者被占用,或者无权限访问,或者打开的不是文件 ...

  6. yapi的一些基本操作

    一.yapi能干什么 强大的接口管理平台 提供mock功能 提供测试功能 项目管理功能 插件齐全 二.yapi的权限 项目权限 操作 游客 项目开发者 项目组长 超级管理员 浏览公开项目与接口 √ √ ...

  7. maven2创建的archetypeArtifactId类型

    原文:https://www.cnblogs.com/xiziyin/archive/2009/11/22/1608239.html 添加翻译:(我总觉得看汉字比看英文要快得多) 看maven-def ...

  8. sql server数据库的带返回值的存储和函数的基础使用

    准备基本的数据 create table test_table ( id int identity(0,1), name varchar(20), age int, book_name varchar ...

  9. MOBIUS: Towards the Next Generation of Query-Ad Matching in Baidu's Sponsored Search——百度下一代搜索广告系统

    简介 传统的广告最终的呈现需要经过召回与排序两个阶段,百度的搜索架构则采用三层漏斗状,如图1所示.最上面的一层用于筛选出和用户查询最相关的一部分广告,将整个候选广告集从亿级降到千级:下面两层是排序阶段 ...

  10. 7. 基础增删改 - 使用Portal Webapi进行会员信息的增删改

    我们可以通过使用Portal Web API在Portal页面中跨所有Microsoft Dataverse表执行创建.更新和删除操作,下面我们就一起来看一下如何通过使用AJAX函数来进行操作. AJ ...