''' 模块 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 Proogramming --面向对象编程 程序 = 算法 + 数据结构 ''' # 创建一个学生类 # 通过class关键字创建类, 类名通常要求首字母大写 class Student: # 方法method # __init__ (self)方法也称为--"构造方法"-Constructor # 类中每一个方法的第一个参数都必须是self,并且该参数由系统自动传参 def __init__(self): print ('这是构造方法') # 创建对象-调用Student 类的构造方法创建一个该类的实例-instance tom = Student() # 添加数据 tom.name = 'Tom Cruse' tom. age = 22 tom.gender = '男' print (tom.name) mike = Student() mike.name = 'Michael Jordan' mike.age = 25 mike.score = 99 print (mike.name) print(tom) print(mike) class Dog: def __init__(self,name,age,color,weight): # 定义类属性(数据) # self:代词,指代当前对象 ''' 变量的作用域 name是局部变量,它的作用范围仅限于定于它的函数或方法内部 self.name是成员变量,它的作用范围是定义它的类的内部 __xxx, 变量名前面有2个下划线,表示该变量是一个私有变量 私有变量值允许子类的内部访问, 不能从类外部进行访问 ''' 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 set_age(self,age): return self.__age def set_age(self,age): if age > 0 and age<=15: self.__age = age else: # 抛出异常 raise NameError('错误的年龄!') def get_color(self): return self.__color def set_color(self,color): self.__color = color) wangcai = Dog('旺财',4,'黄白','50') wangcai.show() # wangcai.__name = '旺旺' # wangcai.__age = -100 laifu = Dog('来福',3,'黑','拉布拉多') laifu.show() # def show(dog): # print(dog.name,dog.age,dog.color,dog.breed) # show(wangcai) ''' object 类是所有其他类的父类 如果一个类的父类是object,可以不必声明 ''' class Animal(object): # 如果没有显式的提供构造方法,程序会提供一个默认的构造方法 def run(self): print('动物正在跑...') ''' 继承 Dog 类继承了Animal类,我们把Dog类也称为子类,Animal类也称为父类 继承的好处就是子类可以获得父类的全部功能(包括属性和方法) 继承的同时子类也可以有自己的方法 并且子类可以对继承自己父类的方法进行 重写 ''' class Dog(Animal): def bark(self): print('汪汪汪...') # 重写override def run(self): print('狗在奔跑...') class Cat(Animal): a = Animal() a.run() dog = Dog() dog.run() dog.bark() cat = Cat() cat.run() cat.eat() ''' 多态 -同一种对象在不同的场合表现不同的状态,称之为多态 多态可以简化方法的调用 ''' # isinstance(),判断某个对象是否某个类的一个实例 print(isinstance(dog,Dog)) print(isinstance(dog,Animal)) def run_twice(Animal): Animal.run() Animal.run() run_twice(a) run_twice(dog) run_twice(cat)
|