返回

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

发布时间:2023-02-11 11:03:26 289
# python# 容器

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


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Python__23--对象 2023-02-11 10:45:44