首页 > 编程语言 >Python__24--对象的特殊属性与特殊方法

Python__24--对象的特殊属性与特殊方法

时间:2023-02-03 20:32:09浏览次数:33  
标签:__ 24 .__ name Python self 对象 拷贝

1 特殊属性

1.1 dict

class A:
pass
class B:
pass
class C(A,B):
def __init__(self,name,age):
self.name=name
self.age=age
x=C('Jack',20)
print(x.__dict__) #输出实例对象的属性字典
print(C.__dict__) #输出类的方法和属性字典

1.2 class

print(x.__class__)      #输出对象所属的类

1.3 bases

print(C.__bases__)       #输出所有父类类型的元组

1.4 base

print(C.__base__)       #只查看从左到右继承的第一个子类

1.5 mro

print(C.__mro__)      #类的层次结构元素

1.6 subclasses

print(A.__subclasses__)      #子类的列表


2 特殊方法

2.1 add

__add__方法是python的内置方法之一, 是一个一元函数。作用相当于求和运算

通过重写__add__方法,可使自定义对象具有“+”功能

class Student:
def __init__(self,name):
self.name=name
def __add__(self,other):
return self.name+other.name
stu1=Student('张三')
stu2=Student('李四')
s=stu1+stu2
print(s)
s=stu1.__add__(stu2)
print(s)


2.2 len

len()的作用是返回容器中元素的个数,要想使len()函数成功执行,必须要在类中定义__len__()。

class Student:
def __init__(self,name):
self.name=name
def __len__(self):
return len(self.name)
stu1=Student('张三')
print(len(stu1))
print(lst.__len__())


2.3 init

在Python中定义类经常会用到__init__函数(方法),首先需要理解的是,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问。而__init__函数(方法)支持带参数类的初始化,也可为声明该类的属性(类中的变量)。__init__函数(方法)的第一个参数必须为self,后续参数为自己定义。

3 类

3.1 赋值

幅值只是形成两个变量,实际上还是指向同一个对象

Python__24--对象的特殊属性与特殊方法_子类

3.2 浅拷贝

理解一:浅拷贝只拷贝主对象,两个主对象地址,源对象与拷贝对象会引用同一个子对象,既指向同一个实例对象。

理解二:浅拷贝指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。

Python__24--对象的特殊属性与特殊方法_子类_02

3.3 深拷贝

理解一:深拷贝主对象和实例对象都会拷贝,新地址。

理解二:深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。

Python__24--对象的特殊属性与特殊方法_深拷贝_03


标签:__,24,.__,name,Python,self,对象,拷贝
From: https://blog.51cto.com/husheng/6036061

相关文章

  • C# 中 IsNullOrEmpty 和 IsNullOrWhiteSpace使用与区别
    一、概述C#中判断字段或者字符串是否为空或者NULL的时候,我们通常使用IsNullOrEntity和IsNullOrWhiteSpace函数进行判断,但是这两个函数在大部分情况得出的结果是一致的,但是......
  • 三种IPv6 中的隧道技术
    隧道模式直接利用现有IPv4网络实现与IPv6网络的通信。1、6PE在核心网络是IPv4网络的情况下,如果要构建一个IPv6网络,可以通过在支持IPv6协议的边界路由器之间建立IPv6隧道,由这......
  • Java两大工具库:Commons和Guava(5)
    您好,我是湘王,这是我的51CTO博客。值此新春佳节,我给您拜年啦~祝您在新的一年中所求皆所愿,所行皆坦途,展宏“兔”,有钱“兔”,多喜乐,常安宁!在开发中,经常会遇到这样的场景:有些数据......
  • 动态规划及优化
    决策单调性定义:单调矩阵:每行最值位置单调不降。完全单调矩阵:每个子矩阵都是单调矩阵,这里的子矩阵可以不连续。蒙日矩阵:满足四边形不等式的矩阵,蒙日矩阵一定是完全单调......
  • drf之视图扩展类(混入类)
    ###1.2.25个视图扩展类- 也叫混入类。作用:提供了几种后端视图(对数据资源进行增删改查)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类......
  • 使用graphviz图形化展示路径(决策树用到此库)
    问题:当出现错误graphviz.backend.execute.ExecutableNotFound:failedtoexecuteWindowsPath('dot'),makesuretheGraphvizexecutablesareonyoursystems'PATH......
  • 数组
    数组按一定格式排列起来的,具有相同类型的数据元素集合定义后维数和维界不再改变(结构固定)且一般不做插入和删除操作,因此一般采用顺序存储结构一维数组:线性表中的数据......
  • IDEA必备插件、阿里巴巴规范插件(代码格式化,注释模板化)的安装及使用和快捷键设置
     背景:记录下idea的配置,换电脑方便直接配置这些信息第一步:安装必备插件如下英文直接翻译就是插件的作用,大部分不用额外配置,AdapterforEclipseCodeFormatter是阿......
  • 由逗号、赋值优先级想到的语法结构
    逗号的意义在C语言中,逗号用来表示一个中间的表达式;而在lua和Python中,逗号通常用来作为多值赋值的一种语法。这就导致一个有意思的现象,相同的语句在C/LUA语言中不同的意义......
  • Web10道签到题
    题目1万能密码题目2弱口令admin123456登录后台,文件管理上传<?phpsystem('cat/tmp/flag');?>题目3题目4F12发现include.phpinclude.php?file=php://filter/......