零基础入门python3.7 ——基础知识总结(二十八)创建自定义模块

一。自定义模块 

模块就是包含python代码的文件。 知道了这一点就可以新建模块并使用了。建立一个hello的python文件用于封装模块。代码如下:

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

class Cart:
    def __init__(self, color):
        self.color = color

接下来再新建一个文件,在此文件里导入模块即可使用

import demo

a = demo.Person("小张", 45)
print(a.name)
print(a.age)

('小张',)
(45,)

这就是新建一个自定义模块的流程。 但是这样还是存在一个问题。 即模块写好之后其他任何人都可以使用。那么使用前就要保证模块中的代码能够正常执行。 最简单的办法就是在模块文件里编写测试代码 ,只需要运行一下这个文件就可以知道模块是否能正常运行了,

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

class Cart:
    def __init__(self, color):
        self.color = color

a =  Person("小张", 45)
print(a.name)
print(a.age)

b = Cart("red")
print(b.color)


('小张',)
(45,)
red

这样虽然可以解决问题。 但是信的问题也随之产生。即在别人使用这个模块中的成员时。 模块中的测试代码也会执行。

import demo

a = demo.Person("小张", 45)
print(a.name)
print(a.age)

('小张',)
(45,)
red
('小张',)
(45,)

这显然不符合实际开发的需求。 为了解决这个问题python提供了内置的__name__变量。  这个变量的好处在于在直接运行模块时其值为“__main__", 而在其他程序中使用该模块时__name__的值会变成模块名。根据这个原理就可以做出判断,

  • 单独运行模块
class Person:
    def __init__(self, name, age):
        self.name = name,
        self.age = age,

class Cart:
    def __init__(self, color):
        self.color = color

if __name__ == "__main__":

    a = Person("小张", 45)
    print(a.name)
    print(a.age)

    b = Cart("red")
    print(b.color)

('小张',)
(45,)
red
  • 在其他程序中使用模块
import demo

a = demo.Person("小张", 45)
print(a.name)
print(a.age)

('小张',)
(45,)

模块编写完成是为了提供给开发者使用的。 这样以来变成说明文档就变得尤为重要。所以在模块编写完成后要编写一定的说明文档。

'''
Person类包含name和age属性
Cart类包含color属性
url字符串 初始值为"https://www.baidu.cn"
'''

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

class Cart:
    def __init__(self, color):
        self.color = color

url = "https://www.baidu.cn"

if __name__ == "__main__":

    a = Person("小张", 45)
    print(a.name)
    print(a.age)

    b = Cart("red")
    print(b.color)

说明文档添加好之后在使用模块的时候如果不想打开模块看说明文档则可以使用__doc__属性打印说明文档

import demo
print(demo.__doc__)


Person类包含name和age属性
Cart类包含color属性
url字符串 初始值为"https://www.baidu.cn"

 

你可能感兴趣的:(python,python)