美文网首页
Python: 魔法属性

Python: 魔法属性

作者: xiaohan_zhang | 来源:发表于2019-06-22 14:04 被阅读0次

1. __doc__

表示类的描述信息

class Test(object):
    """描述类信息,这是一个测试类"""
    def fun(self):
        pass

print(Test.__doc__)     # 输出:描述类信息,这是一个测试类

2. __module__和 __class__

module 表示当前操作的对象在哪个模块
class 表示当前操作的对象的类是什么

class Person(object):
    def __init__(self):
        self.name = "xiaoli"

p = Person()
print(p.__module__)     # __main__
print(p.__class__)      # <class '__main__.Person'>

3. __init__

初始化方法,通过类创建对象时,自动触发执行

class Person2(object):
    def __init__(self, name):
        self.name = name
        self.age = 19

pp = Person2("xiaobai")     # 自动执行类中的__init__方法

4. __del__

当对象在内存中被释放时,自动执行
注:此方法一般无需定义,del的调用是由解释器在进行垃圾回收时自动触发执行的

class Foo(object):
    def __del__(self):
        pass

f = Foo()

4. __call__

对象后面加括号,触发执行
init方法的执行是由创建对象触发的,即 对象=类名();
而对于call方法的执行是由对象后加括号触发的,即 对象() 或 类()()

class Foo2(object):
    def __init__(self):
        print("__init__")

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

ff = Foo2()     # 执行__init__
ff()        # 执行__call__

5. __dict__

类或对象中的所有属性
类的实例属性属于对象;类中的类属性和方法等属于类

class Province(object):
    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 0x1033c9950>, 'func': <function Province.func at 0x1033c99d8>, '__dict__': <attribute '__dict__' of 'Province' objects>, '__weakref__': <attribute '__weakref__' of 'Province' objects>, '__doc__': None}

obj1 = Province("山东", 10000)
# 获取对象obj1的属性
print(obj1.__dict__)    # {'name': '山东', 'count': 10000}

6. __str__

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

class Test2(object):
    def __str__(self):
        return "str"

t = Test2()
print(t)        # str

7. __getitem__、__setitem__、__delitem__

用于索引操作,如字典。以上分别表示,获取、设置、删除数据

class Test3(object):
    def __getitem__(self, item):
        print("getitem", item)

    def __setitem__(self, key, value):
        print("setitem key = ", key, " value = ", value)

    def __delitem__(self, key):
        print("delitem", key)

t = Test3()
result = t["k1"]        # 自动触发执行__getitem__
t["k2"] = "xiaolan"     # 自动触发执行__setitem__
del t["k1"]             # 自动触发执行__delitem__

相关文章

  • Python | 魔法属性 | 魔法方法

    前言 在python中,以前后各有两个下划线的这种方式命名的标识符,称为魔法属性,或魔法方法,这些魔法属性或魔法方...

  • Python: 魔法属性

    1. __doc__ 表示类的描述信息 2. __module__和 __class__ module 表示当前操...

  • 2018-09-07 Day15-类和对象02

    一、内置类属性 内置类属性就是魔法属性 1、魔法属性 魔法属性:属性名的前面和后面都有两个下划线。 特殊的魔法属性...

  • 2018-09-07-类和对象

    一、内置类属性(魔法属性) 内置类属性就是魔法属性魔法属性:属性名的前面和后面都有两个下划线魔法方法:方法的前面和...

  • 魔法属性

    今天给大家介绍一些Python中的类属性中存在的一些具有特殊含义的属性,常常被我们称为魔法属性,详情如下: 1. ...

  • Python 魔法属性 - 并不是真的魔法

    仅供学习,转载请注明出处 魔法属性 无论人或事物往往都有不按套路出牌的情况,Python的类属性也是如此,存在着一...

  • 2018-09-07 day15-类和对象

    总结 一.内置类属性 内置类属性就是魔法属性魔法属性就是属性名前后都有两个下划线,魔法方法就是方法前后都有两个下划...

  • 2018-09-07-day15-类和对象

    内置类属性 内置类属性就是魔法属性 魔法属性: 属性名前后都有两个下划线 魔法方法: 方法的前后都有两个下划线 案...

  • Day15—类和对象2

    1 内置类属性 内置类属性就是魔法属性魔法属性:属性名的前面和后面都有两个下划线。魔法方法:方法的前后都有两个下划...

  • 2018-09-07类和对象2(day15)

    一、内置类属性 内置类属性就是魔法属性 魔法属性:属性名的前面和后面都有两个下划线 魔法方法:方法的前后都有两个下...

网友评论

      本文标题:Python: 魔法属性

      本文链接:https://www.haomeiwen.com/subject/jvomqctx.html