Python3 --- 魔术方法、特殊参数、特殊变量、类与实例、异常、包、发布与安装、系统参数、列表生成式

本文详细介绍了Python3中的魔术方法,包括__init__、__str__、__del__、__mro__和__new__;特殊参数self和cls;特殊变量__name__、__all__、__file__和__slots__;类与实例的关系及单例模式;异常处理和自定义异常;包的概念、__init__.py的作用和包嵌套;发布与安装的步骤;系统参数的使用;以及列表生成式的应用。
摘要由CSDN通过智能技术生成

一、魔术方法

1.1、__init__(self):用于初始化

 

class Cat:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __str__(self):
        return self.name + str(self.age) + "岁"

cat1 = Cat("汤姆猫", 1)
cat2 = Cat("加菲猫", 2)

print(cat1)
print(cat2)

 

 

 

1.2、__str__(self):相当于Java的重写的toString方法

 

class Cat:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __str__(self):
        return self.name + str(self.age) + "岁"

cat1 = Cat("汤姆猫", 1)
cat2 = Cat("加菲猫", 2)

print(cat1)
print(cat2)

 

 

 

1.3、__del__(self):相当于Java中对象销毁时的回调函数

 

class Cat:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __del__(self):
        print("对象已销毁")

cat1 = Cat("汤姆猫", 1)
cat3 = cat1
del cat1

print("="*20)
cat2 = Cat("加菲猫", 2)

print("="*20)

(1)通过上面的代码可以看出,当所有对象的指向都del时,才会执行__del__(self)
(2)当程序执行到最后一步完成后,程序会自行销毁已经不再使用的对象,此时会调用__del__(self)
 

 

1.4、__mro__():继承下方法搜索调用的优先级

 

class Base(object):
    def test(self):
        print()

class A(Base):
    def test(self):
        print("------------A")

class B(Base):
    def test(self):
        print("------------B")

class C(A,B):
    pass
    #def test(self):
    #    print("------------C")

c = C()
c.test()
print(C.__mro__)

(1)根据上面的代码可以看出C继承A和B,A和B继承Base,Base继承object

 

(2)__mro__是通过C3算法来确定的方法调用的优先级

 

 

1.5、__new__():object的__new__(cls)是创建对象的方法,这里的__new__(cls)只是重写了object的方法,所以对象没有创建,如果需要创建,则需要调用object.__new__(cls)方法(如下注释部分)

class Test(object):
    def __init__(self):
        print("----init方法----")

    def __del__(self):
        print("----del方法----")

    def __str__(self):
        print("----str方法----")

    def __new__(cls):
        print("----new方法----")
        print(id(cls))
        #return object.__new__(cls)

print(id(Test))

test 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值