zoukankan      html  css  js  c++  java
  • 面向对象初级篇

    一.面向对象三大特性:

      1.封装

         (1)将相关功能封装到一个类中:   

                    class Message:
                        def email(self):pass
                        def msg(self):pass
                        def wechat(self):pass

         (2)将数据封装到一个对象中:         

                    class Person:
                        def __init__(self,name,age,gender):
                            self.name = name
                            self.age = age
                            self.gender = gender
                            
                    obj = Person('盖伦',18,'男')

       2.继承   

                class SuperBase:
                        def f3(self):
                            print('f3')
    
                    class Base(SuperBase):  # 父类,基类
                        def f2(self):
                            print('f2')
    
                    class Foo(Base):        # 子类,派生类
                        
                        def f1(self):
                            print('f1')
                            
                    obj = Foo()
                    obj.f1()
                    obj.f2()
                    obj.f3()

        3.多态

          鸭子模型.传入的参数可以是任何一种形态,只要能完成相应的功能就可以了

    二.类的成员

      1.成员

        1.变量

          --类变量(静态字段)  类.字段/对象.字段

          --实例变量(字段)  对象.字段

        2.方法

          --实例方法    对象.方法名

          --静态方法    类.方法/对象.方法名

          --类方法     类.方法名/对象.方法名

        3.属性

           --属性      对象.属性名(不用加括号)

        4.主动调用其他类的成员

          方式一:类.实例方法(自己传self),与继承无关     

                class Base(object):
    
                    def f1(self):
                        print('5个功能')
    
                class Foo(object):
    
                    def f1(self):
                        print('3个功能')
                        Base.f1(self)
    
                obj = Foo()
                obj.f1()

          方式二:按照类的继承顺序,找下一个     

                class Foo(object):
                    def f1(self):
                        super().f1()
                        print('3个功能')
    
                class Bar(object):
                    def f1(self):
                        print('6个功能')
    
                class Info(Foo,Bar):
                    pass
    
                # obj = Foo()
                # obj.f1()
    
                obj = Info()
                obj.f1()

          5.特殊成员

            __init__  类名()自动执行(初始化方法,不是构造方法)

            __call__  对象()自动执行

            __getitem__  对象["xx"]自动执行

            __setitem__  对象["xx"]=11 自动执行

            __delitem__   del   对象["xx]  自动执行

            __add__    对象+对象   自动执行

            __new__  这个才是真正的构造方法,创造了当前类的一个空对象

            with 对象 as  f  自动执行 __enter__中return的内容就是f的内容 /__exit__

            __str__ 把返回的值当作对象的名字

            __doc__  打印类中的注释

            __dict__   将初始化中的参数和值匹配成字典

            __iter__ 如果想要把不可迭代对象->可迭代对象,在类中定义__iter__方法,iter()返回一个迭代器(生成器也是一种特殊迭代器)

            

       2.修饰符

       3.组合(嵌套)

      

  • 相关阅读:
    mwutil公用方法库——dateTool
    mwutil公用方法库文档——cookieTool
    mwutil 公用方法库文档 ——arrayTool
    localstorage封装!
    github commit 规范
    你好,C++(40)7.1 一切指针都是纸老虎:彻底理解指针
    你好,C++(39)6.4.4 依葫芦画瓢:用C++表达设计结果(下)
    你好,C++(38)从问题描述中发现对象的属性和行为 6.4 工资程序成长记:类与对象(上)
    你好,C++(37)上车的人请买票!6.3.3 用虚函数实现多态
    你好,C++(36)人参再好,也不能当饭吃!6.3 类是如何面向对象的
  • 原文地址:https://www.cnblogs.com/nianshaoyouwei/p/9561608.html
Copyright © 2011-2022 走看看