类的常用函数


issubclass()

检测一个类是否是另外一个类的子类

格式1:issubclass(被检测类,父类)
返回值:布尔值 格式1:issubclass(被检测类,(父类1,父类2,父类3...))
返回值:布尔值 注意:只要有一个类是当前被检测类的父类,那么最终结果就是True

isinstance()

检测一个对象是否是某个类的对象

格式1:isinstance(对象,类)
返回值:布尔值 格式2:isinstance(对象,(类1,类2,类3...))
返回值:布尔值 注意:只要一个类是当前对象的类,那么最终结果就是True

hasattr()

检测对象/类是否具有某个成员

格式:hasattr(对象/类,'成员名')
返回值:布尔值

getattr()

获取对象/类中的成员值

格式:getattr(对象,'成员名'[,成员不存在时的默认值])
返回值:成员的值

setattr()

设置或者添加对象/类中的成员

格式:setattr(对象,'成员名',值)
返回值:None

delattr()

删除对象/类中的成员

格式: delattr(对象,成员)
返回值:None

dir()

获取对象的成员名称列表

格式:dir(对象)
返回值:列表

property()

用于设置成员属性的修饰符

格式:成员属性 = property(获取的方法,设置的方法,删除的方法)

描述符


python中的描述符是用于描述对象中的属性。主要作用就是对属性操作提供限制,验证,管理等相关权限的操作。

描述符主要有三种操作需要设置:

get      获取属性的操作

set      设置属性的操作

delete   删除属性的操作

描述符方法1


#描述符类
class Description:
#成员属性
#name = '' #初始化方法
def __init__(self):
#为当前类/对象添加一个成员属性(当前类)来接收需要描述的成员属性(要描述的类)此处还没有接收(占位)
self.name = None #get获取属性值的方法
def __get__(self,obj,cls):# self 用于接收当前描述符类的对象 obj 接收用于管理的成员的对象 cls 用于接收管理成员的类
print('获取方法被触发')
self.name = str(self.name)
return self.name[:4] #set设置属性值的方法
def __set__(self,obj,val): #self 用于接收当前描述符类的对象 obj 接收用于管理的成员的对象 val 设置的值
print('设置方法被触发')
#print(self,obj,val)
#在此处可以添加限制和判断(密码奇数时*2)
if val %2 == 1:
val *= 2
#完成了(email)对象的属性值的设置
self.name = val #delete删除属性值的方法
def __delete__(self,obj): #self当前描述符类的对象 obj 接收用于管理的成员的对象 #用户代为删除操作
del self.name #声明一个邮箱的类
class Email
#属性 #用户名
account = 'conghao@zhiling.com'
#密码(为密码设置了描述符 的对象) 这一步相当于吧password的所有传入了Description的对象当中
password = Description()

描述符方法2:


#邮箱类
class Email: #成员属性
#为username添加描述符
#username = ''
#设置邮箱账号最大的长度
maxlength = 6
#为描述符添加一个临时变量(在描述符中代替username进行操作)
tmpusername = None
password = '' #成员方法
#为username的描述符进行设置(添加方法)
#获取username的描述符方法
def getusername(self):
print('获取操作被触发')
#返回值之前进行值的修饰,两边添加星星
if self.tmpusername != None:
self.tmpusername = '★' + self.tmpusername + '★'
#设置获取username的时候的值
return self.tmpusername #设置username的描述符方法
def setusername(self,val):
print('设置操作被触发')
#限制,根据Email类的最大账号长度对用户名进行截取之后在设置
#检测val是否是字符串类型
if isinstance(val,str):
val = val[0:self.maxlength]
self.tmpusername = val #删除username的描述符方法
def delusername(self):
print('删除操作被触发')
#删除操作
del self.tmpusername #为username设置描述符
username = property(getusername,setusername,delusername)

3.属性修饰符


#邮箱类
class Email: #用户名
username = ''
#密码
password = ''
#使用描述符来操作昵称
#昵称
petname = '小乖乖'
#为描述符设置临时变量
__petname = None #成员方法(暂无)
#描述符设置的三个部分 获取,设置和删除
#处理petname获取操作
@property
def petname(self):
print('获取操作被触发')
return self.__petname #处理petname的设置操作
@petname.setter
def petname(self,val):
print('设置操作被触发')
#设置操作
self.__petname = val #处理petname的删除操作
@petname.deleter
def petname(self):
print('删除操作被触发')
#删除操作
del self.__petname

类的内置属性


__dict__

获取当前类/对象成员组成的字典

__doc__

获取当前类/对象的文档,和函数一样使用''' 定义即可

__name__

类.__name__是获取当前类名,如果直接写__name__则是获取模块的名称

__bases__

获取类的继承列表中所有父类组成的元组

python 类和对象下的更多相关文章

  1. [python]类与对象-下

    [实例对象]可以简称为[实例] 一.类与对象的关系 [类]是[对象]的模板. [类]就像工厂的模具,以它为模板,造出来的成千上万的产品,才是被我们消费.购买.使用,真正融入我们生活的东西.这些产品,在 ...

  2. Python 类和对象-下

    类的常用函数 #issubclass() 检测一个类是否是另外一个或者一组类中的子类 class Father: pass class Mother: pass class LaoWang: pass ...

  3. 一文讲全了Python 类和对象内容

    摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan  . Pytho ...

  4. python类与对象各个算数运算魔法方法总结

    1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...

  5. python 类和对象的属性

    python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象. 1. 父类的对象属性会被子类的对象继承. 2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性 ...

  6. python类、对象

    python类.对象 学习完本篇,你将会深入掌握 什么是类,对象 了解类和对象之间的关系 能独立创建一个People(人类),属性有姓名.性别.年龄.提供一个有参的构造方法,编写一个show方法,输出 ...

  7. python类与对象基本语法

    面向对象编程的2个非常重要的概念:类和对象. 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念--类. 类就相当于制造飞机时的图纸,用它 ...

  8. python 类和对象

    类和对象 类 1.类的组成    数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用  属性引用:类名.属性(增删改查)   实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...

  9. Python类和对象

    目录 类与对象 其他方法 继承 经典类和新式类 派生 组合 接口.归一化设计与抽象类 继承实现的原理 子类中调用父类的方法 指名道姓 super()方法 多态与多态性 封装 单下划线开头 双下划线开头 ...

随机推荐

  1. [BZOJ3307] 雨天的尾巴(树上差分+线段树合并)

    [BZOJ3307] 雨天的尾巴(树上差分+线段树合并) 题面 给出一棵N个点的树,M次操作在链上加上某一种类别的物品,完成所有操作后,要求询问每个点上最多物品的类型. N, M≤100000 分析 ...

  2. LibreOJ 6177 题解(状压DP)

    题面 传送门 分析 刚看到这道题时想的是跟最短哈密顿路类似的二进制状压DP,先用floyd处理距离 但是此题用二进制不够,应该用三进制 0,1,2分别表示未送,正在送,已送完 dp[s][i]表示当前 ...

  3. luoguP3384 [模板]树链剖分

    luogu P3384 [模板]树链剖分 题目 #include<iostream> #include<cstdlib> #include<cstdio> #inc ...

  4. #python# 使用代理和不使用代理对比

    import urllib.request url='http://httpbin.org/ip' #不使用代理 response1=urllib.request.urlopen(url) #设置代理 ...

  5. java绘制带姓的圆

    public class ImageGenerator { private static final Color[] colors = new Color[] { new Color(129, 198 ...

  6. 从0构建webpack开发环境(三) 开发环境以及 webpack-dev-server 的使用

    sourceMap 实际应用开发过程中大部分时间都是处于开发模式中,其中需要频繁的修改代码.调试和打包. 但是打包后的代码多个模块压缩到了一个bundle文件,如果出现警告或者异常很难定位到具体模块和 ...

  7. Web前端基础学习-1

    HTML5/CSS简介 首先来说一说什么是HTML5,HTML5可以认为是字面上的意义,也就是HTML的第五代产品,当然从另一个角度来说它是一种新的富客户端解决方案. HTML5 将成为 HTML.X ...

  8. ROLLBACK - 退出当前事务

    SYNOPSIS ROLLBACK [ WORK | TRANSACTION ] DESCRIPTION 描述 ROLLBACK 回卷当前事务并取消当前事务中的所有更新. PARAMETERS 参数 ...

  9. CS184.1X 计算机图形学导论(第三讲)

    第一单元(介绍关于变换的数学知识) :基本二维变换 模型坐标系,世界坐标系 1.缩放 Scale(规模,比例) Sx表示在x方向上放大的倍数,Sy表示在y方向上放大的倍数,因此X坐标乘以Sx,Y坐标乘 ...

  10. ubuntu 开启ftp服务

    一. 检查是否已安装 vsftpd vsftpd -v 二. 安装 vsftpd apt-get install vsftpd 三.  检查是否已安装好 vsftpd vsftpd -v system ...