python中常用的魔法属性

本文深入解析Python中的类方法,包括__init__初始化方法、__del__析构方法、__call__调用方法、__dict__属性字典及__str__字符串表示。探讨这些方法如何在对象创建、使用和销毁过程中自动触发,以及它们在类和对象管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

doc 表示类的描述信息
module 表示当前操作的对象在那个模块(main
class 表示当前操作的对象的类是什么
new 创建对象时为对象分配空间,在初始化方法__init__之前被调用
init 初始化方法,通过类创建对象时,自动触发执行,一般用来定义实例属性
del 当对象在内存中被释放时,自动触发执行
call 对象后面加括号,触发执行,例如对象()或者类名()()
dict 类或对象中的所有属性
str 在打印对象时,默认输出该方法的返回值(字符串)

#__doc__
#表示类的描述信息
class Foo:
    def func(self):
        pass
#类的描述信息
print(Foo.__doc__)
-----------------------------------
#__module__
#__class__
class Person():
    def __init__(self):
        self.name = "laowang"

obj = Person()
#输出模块
print(obj.__module__)
#输出类
print(obj.__class__)

----------------------------------------
#__init__
#初始化方法,通过类创建对象,自动触发执行
class Person():
    def __init__(self, name):
        self.name = name
        self.age = 18
#自动执行类中的__init__方法
obj = Person("laowang")
print(obj.name)

-------------------------------------
#__del__
#当对象在内存中被释放时,自动触发执行
class  Foo:
    def __del__(self):
        pass
#此方法一般无需定义

---------------------------------------
#__call__
#对象后面加括号,触发执行

class Foo:
    def __init__(self):
        pass

    def __call__(self, *args, **kwargs):
        print("__call__")

obj = Foo()
obj()

-------------------------------------
#__dict__
#类或对象中的所有属性
#类的实例属性属于对象,类中的类属性和方法等属于类

class Province():
    country = "China"
    def __init__(self, name, count):
        self.name = name
        self.count = count

    def func(self, *args, **kwargs):
        print("func")
#获取类的属性,即; 类属性,方法
print(Province.__dict__)
#结果:{'__module__': '__main__', 'country': 'China', '__init__': <function Province.__init__ at 0x00ED93D8>, 'func': <function Province.func at 0x0334C030>, '__dict__': <attribute '__dict__' of 'Province' objects>, '__weakref__': <attribute '__weakref__' of 'Province' objects>, '__doc__': None}
obj1 = Province("山东", 10000)
print(obj1.__dict__)
#结果:{'name': '山东', 'count': 10000}
obj2 = Province("山西", 20000)
print(obj2.__dict__)
#结果:{'name': '山西', 'count': 20000}
------------------------------------------

#__str__
#如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值

class Foo:
    def __str__(self):
        return "laowang"

obj = Foo()
print(obj)
#结果: laowang


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值