我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

python-贺威栋-2021.01.22

[复制链接]
I5029学员认证 发表于 2021-1-22 20:32:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
'''
模块 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('动物正在跑...')
'''
继承
    Dog类继承了Animal类,Dog类称为子类,Animal类称为父类
    好处:子类可以获得父类的全部功能(包括属性和方法)
    继承的同时,子类也可以有自己的方法
    并且子类可以对继承自父类的方法进行重写
'''
class Dog(Animal):
    def bark(self):
        print('汪汪汪...')
    # 重写 override
    def run(self):
        print('狗在跑...')
class Cat(Animal):
    def eat(self):
        print('吃鱼...')
    def run(self):
        print('猫爬树...')
a = Animal()
print(a)
dog = Dog()
dog.run()
dog.bark()
cat = Cat()
cat.run()
cat.eat()
'''
多态
    同一个对象在不同的场合表现出不同的状态称之为多态
    多态可以简化方法的调用
'''
# isinstance(),判断某个对象是否是某个类的实例
print(isinstance(dog,Dog))
print(isinstance(dog,Cat))
print(isinstance(dog,Animal))
def run_twice(animal):
    animal.run()
    animal.run()
run_twice(a)
run_twice(dog)
run_twice(cat)
回复

使用道具 举报

关注0

粉丝0

帖子27

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备20001493号-1 )

版权所有 © 西安菁英教育科技有限公司 2023-2026