我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

python_焦新瑞_20200122

[复制链接]
8487学员认证 发表于 2021-1-22 20:31:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、整理笔记面向对象编程:类(class)、函数(方法mthod
面向对象的三大特性:封装、继承、多态
1.
'''
模块module
    每一个py结尾的原文件都是一个模块
    模块的好处:方便代码的维护;方便代码的复用;使用模块还可以避免命名冲突
包package(文件夹)
    在模块名前添加包名,可以避免模块命名冲突
    每一个目录下都有一个__init__.py的模块
    如果没有,则python吧该目录当做普通目录处理

'''

# ----------import sys
import sys
def test():
    #调用系统模块获取命令行参数  
    args = sys.argv
    print(args)
# test()
#调用   程序入口  测试代码  尽量不要直接test()
if __name__ == "__main__":
    test()


2.
#---------导入自定义模块
# import demo01   #导入模块的所有内容
# demo01.test()
from demo01 import test#导入模块中指定的内容
test()


3.
'''面向对象编程     OOP   Object Oriented Programing '''
'''
面向对象的特点一:封装
'''

#     对象   =  数据 + 函数(方法   处理数据的 )

#创建一个学生类
# -----------1.class通过class关键字创建类,类名首字母大写
class Student:
#------------2方法method  
    #__init__方法也称为构造方法-Constructor  初始化方法
    #类中每一个方法的第一个参数都必须是self,并且该参数由系统自动传参
    def __init__(self):
        # pass
        print('this is Constructor')
#创建对象
#调用类的构造方法创建一个类的实例-instance
tom  = Student()   
#添加数据
tom.name = 'Tom Cruse'
tom.age = 22
tom.gender = 'male'
print(tom.name,tom.age)
mike = Student()
mike.name = 'Michel Jordan'
mike.score = 99
class Dog:
    def __init__(self,name,age,color,weight):
        #定义类的属性(数据)
        #self:代词,指当前对象
        #self作用:指当前对象;成员变量
        self.__name = name
        self.__age = age
        self.__color = color
        self.__weight = weight
        '''
        变量的作用域:作用的范围
        name是局域变量,它的作用范围仅限于定义的函数或方法内部
        self.name是成员变量,它的作用范围是定义它的class内部
        '''

        #__私有变量    eg: self.__name = name
        #私有变量只允许子类的内部访问不能从类外部进行访问
#-----------3封装
    '''
    封装:
        把数据和处理数据的逻辑封装起来,
        调用方便,并且不需要知道内部的实现细节
    '''

    def show(self):
        print(self.__name,self.__age,self.__color,self.__weight)

    #setter修改 私有属性
    def set_name(self,name):
        self.__name = name
    def set_age(self,age):
        if age>0 and age<=15:
            self.__age = age
        else:
            #抛出异常
            raise NameError('错误的年龄')
    def set_weight(self,weight):
        if weight>0 and weight<=100:
            self.__weight = weight
        else:
            raise NameError('错误的体重')
    #getter获取私有属性
    def get_name(self):
        return self.__name

wangcai = Dog('wangcai',4,'yellowhite',34)

laifu = Dog('laifu',3,'black',44)
# print(laifu.name)
wangcai.show()

wangcai.set_name('wanwang')

print(wangcai.get_name())
# wangcai.set_age(-2)


4.
'''
继承
    好处:子类可以获得父类的全部功能(包含属性和方法)
    继承的同时,子类可以有自己的方法,
    并且子类可以对继承自父类的方法进行  重写
    object是所有其它类的父类
    如果一个类的父类是object可以省略
'''
class Animal(object):

    #如果没有显式的提供构造方法,程序会提供一个默认的构造方法

    def run(self):
        print('Animal is running.....')

#继承:
#Dog(子类)继承了Animal(父类),
class Dog(Animal):
    def bark(self):
        print('wwwwwwwang.....')
    #重写    覆盖父类的方法
    def run(self):
        print('dog is running....'
# a = Animal()
# a.run()

#isinstance()判断某个对象是否是某个类的一个实例
print(isinstance(dog,Dog))



5.
'''
多态:同一个对象表现出不同的状态,称之为多态(同样一个对象在不同的场合有不同状态
    可以简化方法的调用

'''

from demo04 import *
#自定义数据类型:类

def run_twice(animal):
    animal.run()

run_twice(dog)






回复

使用道具 举报

关注0

粉丝0

帖子26

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

客服电话:17792550360

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

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

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