3.0.python的内置变量

_all_

“__all__”变量是一个特殊的变量,可以在普通模块(Python中一个py文件就是一个模块)中出现中,也可以在包的__init__.py中出现。

1、在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中。 属性包括:全局变量、函数、类等。

若没有指定__all__,默认全部属性可以被其他模块导入

若指定了__all__,那么只有__all__指定的属性可以被其他模块导入

示例如下:

__all__=["test"]

def test():
    print('----test-----')

def test1():
    print('----test1----')

2、在包下的__init__.py中使用时,当其他模块使用from sound.effects import *时,除了导入包,还将包含__all__指定的模块

当__init__.py为空时,只是导入这个包,并非导入模块。

示例:sound/effects/__init__.py

__all__ = ["echo", "surround", "reverse"]

__str__和__unicode__

__str__的作用是美化打印出来的结果,使人类更方便查看。看下面例子,如果没有__st__方法,打印的结果是<__main__.Test object at 0x0000022D6D1387B8>格式,有了__str__方法后,打印时会按照__str__定义的格式来打印,打印结果为Name:xiaoming。

class Test:

    def __init__(self, name, job):
        self.name = name
        self.job = job

    def __str__(self):
        return 'Name:' + self.name
instance = Test('xiaoming', 'Teacher')
print(instance)

在Django中,如果用的是Python3的话就只能用__str__方法,如果是Python2的话就使用__unicode__方法。因为更安全一些。看看文档

Last updated

Was this helpful?