工作内容-9:00——17:30
模块 module
每一个.py结尾的源文件都是一个模块
模块方便代码的维护
方便代码的复用
使用模块可以避免命名冲突
包 package
包本质上就是一个文件夹
在模块名前添加包名可避免模块命名冲突
python.day04.demo01
python.day05.demo01
每一个包目录下都有一个__init__.py的模块
如果没有,则python把该目录当做普通目录处理
'''
import sys
def test():
# 调用系统模块获取命令行参数
args = sys.argv
print(args)
# test()
# 测试代码
if __name__ == "__main__":
test()
# 导入模块的所有内容
# import demo01
# demo01.test()
# 导入模块中指定的内容
from demo01 import test
test()
'''
面向对象编程 —— oop object oriented programming
程序 = 算法 + 数据结构
'''
# 创建一个学生类
# 通过class关键字创建类,类名首字母要大写
class Student:
# 方法method
# __init__(self)方法也称为构造方法-constructor
# 类中每一个方法的第一个参数都必须是self,且该参数由系统自动传参
def __init__(self):
pass
# 创建对象——调用Student类的构造方法创建一个该类的实例-instance
tom = Student()
# 添加数据
tom.name = 'Tom Cruse'
tom.age = 22
tom.gender = '男'
print(tom.name)
mike = Student()
mike.name = 'Michael Jordan'
print(mike)
print(tom)
class Dog:
def __init__(self,name,age,color,weight):
# 定义类的属性(数据)
# self:代词,指代当前对象
'''
变量的作用域
name是局部变量,它的作用范围仅限于定义它的函数或方法内部
self.name是成员变量,它的作用范围是定义它的类的内部
__xxx,变量名前面有两个下划线表示该变量是一个私有变量
私有变量只允许从类的内部访问,不能从外部访问
'''
self.__name = name
self.__age = age
self.__color = color
self.__weight = weight
'''
封装
把数据和处理数据的逻辑封装起来
调用方便,且不需要知道内部的实现细节
'''
def show(self):
print(self.__name,self.__age,self.__color,self.__weight)
# 私有变量可修改
# getter/setter方法,用于读写对象的属性
def set_name(self,name):
self.__name = name
def get_name(self):
return self.__name
def set_age(self,age):
if age > 0 and age <= 15:
self.__age = age
else:
# 抛出异常
raise NameError('错误年龄!')
def get_age(self):
return self.__age
def set_weight(self,weight):
if weight > 0 and weight <= 50:
self.__weight = weight
else:
raise NameError('错误体重!')
def get_weight(self):
return self.__weight
wangcai = Dog('旺财',4,'黄白','苏格兰牧羊犬')
# print(wangcai.name)
wangcai.show()
wangcai.set_age(10)
# wangcai.set_age(-10)
# wangcai.set_weight(-10)
lai = Dog('来福',3,'黑','拉布拉多')
# print(lai.name)
lai.show()
'''
object类是所有其他类的父类
如果一个类的父类是object,可以不写
'''
class Animal:
# 如果没有显示的提供构造方法,程序会提供一个默认的构造方法
def run(self):
print('动物正在跑...') |