• python面向对象整理



    一.面向对象引导

    ###########################################
    class Bar:
    def func(self,arg): #self代指的就是中间人
    print(self,self.name,self.age,arg)


    z = Bar() #中间人(对象) = class类
    z.name = "Python" #给中间人的属性赋值
    z.age = 23
    z.func("who you are?")

    print(z.name)

    ###########################################

    二.封装

    __init__: 构造方法,有类赋值给变量的时候,执行的初始话方法

    ##########################################
    class Bar:
    #自己创造的构造方法
    def __init__(self,name,age): #初始化方法
    self.name = name
    self.age = age
    #类的默认构造方法
    def __init__(self):
    pass

    def foo(self):
    print(self,self.name,self.age)

    a = Bar("python",23)
    a.foo()

    ###########################################

    class Person:
    def __init__(self,name,age,like='python'):
    self.name = name
    self.age = age
    self.like = like

    def show(self):
    print("%s-%s-%s" %(self.name,self.age,self.like))

    a1 = Person("python",23)
    print(a1.name,a1.age)
    a1.show()

    #############################################

    三.继承

    1.继承
    class father:
    pass
    class son(father):
    pass

    2.重写:为了不继承父类中的方法,重写一个和父类方法同名的方法
    3.self永远是执行方法的调用者
    4.调用父类方法的两种方式:
    (1) super(子类,self).父类中的方法(...)
    (2) 父类名.父类中的方法(self,....)
    5.继承多个父类class son(father,mother):
    a.左侧优先
    b.一条道走到黑
    c.同一个根,根最后执行
    6.在子类中调用父类的方法
    语法格式是: super(son,self).hello() #执行父类指定的方法

    ############################################
    class father:
    def __init__(self):
    pass
    def hello(self):
    print("father hello world")

    def world(self):
    print("father world is best")
    class mother:
    def hello(self):
    print("mother hello world!")
    def world(self):
    print("mother world is best!")
    class son(father,mother):
    def __init__(self):
    pass
    def hello(self): #重写父类的方法:不执行父类中的方法,执行重写后的方法
    #######执行父类的方法就这两种方法:
    # super(son,self).hello() #执行父类指定的方法
    # father.hello(self) #执行父类中的方法
    print("This is not hello")


    obj= son()
    obj.hello()
    obj.world()

    ##############################################

    三.多态

    python原生就是多态的,所以不用关注python的传参的参数类型

    四.面向对象的中高级部分


    普通字段:字段,属于对象的属性值,定义赋值的时候使用self,只能通过对象访问
    静态字段:在函数的之外的字段就是静态字段,静态字段属于类,内存中只保留一份
    访问的时候可以通过类名.静态字段名 访问 也可以通过 对象访问
    #######
    普通方法:保存在类中,使用对象调用,参数必须带self,self表示当前对象
    静态方法:保存在类中,静态方法不用创建对象,可以直接调用,相当与单独创建了一个函数
    静态方法中的self可以加也可以不加,不会影响静态方法本身
    静态方法使用 装饰器 @staticmethod 修饰
    类方法:保存在类中,又类直接调用
    类方法的参数写cls,cls表示当前类

    属性方法:定义在类中,使用对象调用,在方法的上面使用propety修饰
    属性方法的作用: 调用方法只为了获取参数值的时候,使用参数方法去除方法的小括号,只是为了好看(^*^)
    调用的时候使用 对象名.方法名[不加小括号]
    @方法名.setter 对应的是赋值操作,就是说当你赋值的时候 对象名.方法名= *** ,它自动调用被 方法名.setter修饰的方法
    @方法名.deleter 对应的是del 对象名.方法名 操作,就是说当你删除的时候,它自动调用呗方法名.deleter修饰的方法

    #################################################################


    class Foo:

    def __init__(self):
    pass

    def bar(self): #普通方法
    print("this IS a bar")

    @staticmethod #静态方法
    def test():
    print("this is a test")

    @staticmethod # 静态方法
    def test1(a,b):
    print("this is a test")
    @classmethod
    def test2(cls):
    print("类方法")


    @property
    def test3(self):
    print("property方法")
    @test3.setter
    def test3(self,val):
    print("赋值方法")
    print(val)
    @test3.deleter
    def test3(self):
    print("删除方法")


    foo = Foo()
    foo.test3
    foo.test3=1213
    del foo.test3
    ################################################

    实现简单分页的代码
    ————————————————————————————————————————————————
    class Pargination:

    def __init__(self,current_page):
    self.page = int(current_page)

    def start(self):
    val = (self.page - 1) * 10
    return val
    def end(self):
    val = self.page * 10
    return val


    li = []
    for i in range(1000):
    li.append(i)

    while True:
    p = input("请输入你的查看的页码:")


    page = Pargination(p)
    print(li[page.start():page.end()])

    #################################################

  • 相关阅读:
    Spring Boot 2.x 和 1.x 的区别
    安装 D2l 报错 全网最新解决方式
    实际业务处理 Kafka 消息丢失、重复消费和顺序消费的问题
    拜托,面试官别问我「位图」了
    数据库 sql语句的执行过程
    简易版计算器
    matchRoutes可以根据当前路径直接匹配到路由
    git文件名修改后提交远程无变化
    createreactapp 相关
    SAAS
  • 原文地址:https://www.cnblogs.com/aniuzaixian/p/8043778.html
Copyright © 2020-2023  润新知