如何用Python写一个Package

首先我需要描述一下要做的这件事情。假定我们有2个类,分别为Person类、Stu类,我们要将这2个类分装成一个包,就是这么简单,那么废话不多说,让我们操作起来。

  • 第1步.建立一个Package,命名为Demo1
    右击项目名->new->Python Package
    在这里插入图片描述
  • 第2步.在Demo1包下创建Person
class Person:
    def __init__(self,name,gender):
        self.name = name
        self.gender =  gender
    def printinfo(self):
        print(self.name,self.gender)
  • 第3步.在Demo1包下创建Stu
class Stu():
    def __init__(self,name,gender,stuid):
        self.name = name
        self.gender = gender
        self.stuid = stuid
    def printinfo(self):
        print(self.name,self.gender,self.stuid)

完成上述步骤之后,目录结构应该如下图所示:
在这里插入图片描述

  • 第3步.如果你使用的IDE是PyCharm,那么当你建立一个Package时,在这个包下会自动生成一个__init__.py文件。如果没有使用PyCharm,那么需要你在Package下自行创建__init__.py文件。当一个文件夹下有__init__.py文件时,Python认为这个文件夹是一个包,__init__.py可以为空,也可以写入一些语句。这里我们写入一些语句,该语句分别从Person和Stu两个模块(modules)里导入Person类和Stu类,也就是说一旦我们导入Person和Stu这两个模块,__init__.py会自动帮我们导入Person类和Stu类,从而我们可以直接使用这两个类。
    • 写法1
    from .Person import Person
    from .Stu import Stu
    
    • 写法2
    from Demo1.Person import Person
    from Demo1.Stu import Stu
    

到此,一个Python的Package就创建好了!

  • 第4步.测试,在Demo1下创建test.py文件
from Demo1.Person import Person
from Demo1.Stu import Stu

if __name__ == '__main__':
    p = Person('djk','man')
    s = Stu('djk','man','nwnu')
    p.printinfo()
    s.printinfo()

Note!!!!!!!!!!:
在__init__.py文件中,我们可以使用以下这种写法:

from .Person import Person
from .Stu import Stu

这不会报错;但是如果在测试文件或不是在__init__.py文件中用这种写法,那么就会报错。假如我在test.py测试文件中用以上这种写法,就会报以下的错误:
在这里插入图片描述
要想避免这种错误,那么就不要偷懒了,导入包或者模块的时候都用绝对路径,尽量不用相对路径!!

猜你喜欢

转载自blog.csdn.net/dongjinkun/article/details/114591611