zoukankan      html  css  js  c++  java
  • 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()])

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

  • 相关阅读:
    PHP实现无限极分类
    html2canvas生成并下载图片
    一次线上问题引发的过程回顾和思考,以更换两台服务器结束
    Intellij IDEA启动项目报Command line is too long. Shorten command line for XXXApplication or also for
    mq 消费消息 与发送消息传参问题
    idea 创建不了 java 文件
    Java switch 中如何使用枚举?
    Collections排序
    在idea 设置 git 的用户名
    mongodb添加字段和创建自增主键
  • 原文地址:https://www.cnblogs.com/aniuzaixian/p/8043778.html
Copyright © 2011-2022 走看看