Python关于类的笔记

本文详细介绍了Python中的类对象,包括类的内置魔法方法和属性,如__call__、__getattribute__等。讨论了私有属性的Property用法,动态添加属性和方法的特性,并探讨了元类type在动态创建类中的应用,包括自定义元类以影响类的行为。
摘要由CSDN通过智能技术生成

面向对象编程中,类十分关键,之前在学习过程中有做过关于类的一些笔记,现在发现类的知识很多且繁杂,决定特开一篇专门记录关于类的知识,方便迅速回顾。

在python中,一切皆为对象,类也是对象,即是说类的名字也是一个对象的引用。通常,我们在只定义一个类且不调用的时候,运行python解释器,将会自动执行类定义的代码,创建类对象,不妨看看下面的小实验。

"""只是定义类"""
class Person(object):
    print("----自动创建类对象----")
    
print(Person)  #打印一个对象,自动调用__str__方法
p1 = Person()	
print(type(p1))  #用type()查看对象是什么类型,即是什么创建出来的
print(type(100))
print(type("helloword"))

打印结果:
----自动创建类对象----
<class '__main__.Person'>
<class '__main__.Person'>
<class 'int'>
<class 'str'>

由此可以看出,类也是个对象。字符串、整数通通都是对象,是由str、intl类型创建出来的对象,p1对象是由Person这个类创建出来的。类型也是一个类。

一、类对象内置方法—魔法属性、方法

在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法;
查看实例对象的属性的方法是dir(object)
1.内置__call__()函数,当实例对象被调用的时候,Python解释器就会自动调用call函数,在python中,调用对象的方法是添加(),就会自动调用call函数。在类调用call函数中,需要对call函数进行重写。

"""__call__函数重写"""
class Test(object):
    def __call__(self, *args, **kwargs):  #重写call函数
        print("*"*30)
        print("=====这个类功能是用于测试的====")
        print("*"*30)

t = Test()  #创建类实例对象
t()  #调用对象
打印结果:
******************************
=====这个类功能是用于测试的====
******************************

2.object.__doc__()查看实例对象的描述信息,类似于电影的简介。描述的信息""“XXXXXX”"",类似于python内建函数help(object)

3.实现字典功能的三个魔法方法

(1)__getitem__()
(2)__setitem__()
(3)__delitem__()

4.实现列表切片功能的三个魔法方法

(1)__getslice__()
(2)__setslice__()
(3)__delslice__()

在这里插入图片描述

5.实现迭代对象的两个魔法方法

6.str()

7.class()

8.dir()

二、类对象常见内建属性、方法

python中对象的内建属性如下:
在这里插入图片描述
1.变量__slots__
python动态语言的特性,能够对程序进行添加修改,在程序开发过程中,为了防止用户恶意给对象动态添加属性,可以在类定义的时候对实例对象动态添加属性进行限制。

"""限制动态添加属性"""
class Person(object):
    __slots__ = ["sex", "age"]  #添加属性名字符串

p1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值