python基础语法:类和对象(下篇)

本文探讨了Python中的内部类及其使用,强调它们在抽象和模块调用中的作用。示例展示了如何通过外部类实例化内部类的两种方式。同时,文章介绍了Python的魔术方法,特别是`__init__`和`__del__`,并展示了它们在对象生命周期中的应用。通过重写构造函数和析构函数,展示了对象创建和销毁时的自定义行为。
摘要由CSDN通过智能技术生成

内部类

概念:类的内部定义的类,主要目的是为了更好抽象现实世界。

注意事项:一般情况下不使用内部类,这样会使程序结构复杂,但是理解内部类有助于理解模块的调用。

示例:People类中又定义了Father类和Mother类两个内部类。创建内部类的实例化对象,可以通过外部类的实例化对象调用内部类完成,如Lisi = Zhangsan.Father();也可以直接使用外部类名调用内部类,如Liming = People.Mother()。

class People():
    code = 0

    class Father():
        code = 1

    class Mother():
        code = 2


zhangsan = People()
lisi = zhangsan.Father()  # 第一种实例化方法
print(lisi.code)  # 输出结果:1
liming = People.Mother()  # 第二种实例化方法
print(liming.code)  # 输出结果:2

结论:内部类调用有两种方式。

1.直接使用外部类调用内部类;

2.先对外部类进行实例化,然后再实例化内部类。

魔术方法

在Python语言中,所有以双下划线“__”包起来的方法,都统称为“魔术方法”。
这些方法在实例化时会自动调用,
比如“_str__()”、“__init__()”、“__del__()”等。
使用魔术方法可以构造出非常优美的代码,比如将复杂的逻辑封装成简单的API等。
魔术方法中的“__init__()”方法一般叫做构造函数,用于初始化类的内部状态和参数。
如果不提供,Python语言会给出一个默认的“__init__()”方法

魔术方法中的“__ del __()”函数叫做析构函数,用于释放对象占用的资源。“__del__()”函数是可选的,
如果不提供,Python语言会在后台提供默认析构函数。

魔术方法中,有些可以实现属性访问控制的功能,如“__getattr__(self,name)”,
“__setattr__(self,name,value)”方法等。

示例:魔术方法

class People():
    name = "人"

    def __init__(self, n="非洲人"):
        self.name = n
        print("我是构造函数", self.name)  # 重写构造函数

    def __del__(self):
        print("我是析构函数", self.name)  # 重写析构函数


zhangsan = People()
lisi = People("欧美人")
zhangsan.__del__()  # 调用析构函数
print(zhangsan)
del zhangsan
# print(zhangsan) 出现错误,因为del后,对象就不存在了

输出结果:

我是构造函数 非洲人
我是构造函数 欧美人
我是析构函数 非洲人
<__main__.People object at 0x000001EAF4D09358>
我是析构函数 非洲人
我是析构函数 欧美人

示例中展示了对于这些魔术方法,在创建对象时可以自动执行。当对象自动执行析构函数“A.del()”后,对象仍然存在,但是在调用“del A”,后,对象就已经被回收删除,无法再次使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

威胁情报收集站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值