14-包与模块管理及面向对象初步
1 模块的调用
先新建一个demo文件夹,在此目录下新建3个py文件,分别是main.py, models.py, views.py.
models.py内容如下:
page = 5
def test():
print('models.test()')
views.py内容如下:
x = 99
def test():
print('views.test()')
在main.py文件里输入import models就可导入models模块里的成员。
import models
def hello():
print(models.page)
if __name__ == '__main__':
hello()
>>>5
import models
def hello():
print(models.page)
if __name__ == '__main__':
models.test()
>>>models.test()
import models
import views
def hello():
print(models.page)
if __name__ == '__main__':
views.test()
>>>views.test()
import+模块名的话就是把整个模块导入过来,在具体使用的时候需要把模块名写上。
如果使用from+模块名的方式就可以导入某个具体的变量或方法,此时使用不需要写上模块名:
from models import page
import views
def hello():
print(page)
hello()
>>>5
如果想导入模块内所有的成员,又不想写模块名:
from models import *
import views
def hello():
print(page)
hello()
>>>5
如果两个模块里有同名成员,可以在调用时把具体模块名带上:
import models
import views
models.test()
>>>models.test()
也可以导入后再取一个名字:
from models import test as m_test
from views import test as v_test
m_test()
>>>models.test()
2 新建一个包a,会自动生成一个__init__.py文件。当导入包a时,此文件会自动执行(每次只会执行一次)。
import a
>>>包a已经被调用
15-面向对象编程OOP
实例:
import datetime
class Book():
def __init__(self, title, price, author, publisher, pubdata):
self.title = title
self.price = price
self.author = author
self.publisher = publisher
self.pubdata = pubdata
def print_info(self):
print('当前这本书的信息如下:')
print('标题:{}'.format(self.title))
print('作者:{}'.format(self.author))
print('价格:{}'.format(self.price))
print('出版社:{}'.format(self.publisher))
print('出版时间:{}'.format(self.pubdata))
book1 = Book('Python入门', 30.0, 'peter', '清华大学出版社', datetime.date(2020, 2, 4))
book1.print_info()
>>>当前这本书的信息如下:
>>>标题:Python入门
>>>作者:peter
>>>价格:30.0
>>>出版社:清华大学出版社
>>>出版时间:2020-02-04