• py 的 第 24 天


    面向对象第三天,心好累

    首先昨日内容回顾

    1成员,  

    变量

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

      -示例变量(字段) 对象。字段

    方法

      -实例方法      对象。方法名

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

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

    属性

      -属性         对象。属性名

    修饰符      就是@staticmethod   @classmethod   这是方法修饰符都是在方法上写的

         属性修饰符也一样property

    组合(嵌套) 这个比较重要,今天重要的课程也是补充这个

    今天内容主要是组合补充了一下

      主动调用其他类的成员    方式一:

                    class base(object):

                      def f1(self):

                        print(‘5’)

                    class foo(object):

                      def f1(self):

                        print (‘3)

                        base。f1(self)  这里注意不存在类的继承,不继承也能用

                    obj=foo()

                    obj。f1()

                   总结    base。实例方法(自己传self) 与继承无关,这打印3后打5

          方式2,按照类的继承顺序,找下一个。

                class foo(object):

                    def f1(self):super是按照类的继承顺序去找下一个

                      super()。f1()这里注意super找的是self

                      print(‘3’)

                class bar(object):

                    def f1(self):

                      print(‘6’)

                class info(foo,bar);

                      pass

                obj=foo()

                obj=f1()  这个正常走f1没什么

                obj=info()

                obj。f1()这个就是继承顺序了

    特殊方法  class  foo(object):

          def  __init__(self,a1,a2):

             self.a1=a1

             self.a2=a2

          def    __call__(self,*args,**kwargs):    args万能传参,kwargs关键字传参

            print( 1 , args ,  kwargs)     args单独的传参都能接收,关键字传参变成字典

          def  __getitems__(self,item)

            print(item)

            return 1

          def  __setitems__(self,key,value)

            print(key,value,任何值)打印出来的xx 11  任何值

          def __delitem__(self,key):

            print(key)

          def __add__(self,other):

            return  self.a1+other+a2

          def __enter__(self):

            print('1')    可以return

          def __exit__(self  ,一堆自己出的):

            print(‘2’)

          def    __new__(cls,*args,**kwargs):  正常是先执行new再执行init 如果有new必须有返回值才执行init    返回值就是对象, return object。__new__(cls)

    new 内部创建一个空对象,然后传给init  就是为了把对象和值,通过new传一下

          v1=object.__new__(cls)

          return  v1         他这个v1和下边的obj内存地址是一样的,只是下面的是把值传给类之后的init之后的obj里面有东西 v1是空的

    new 构造方法       init初始化方法

    obj = foo (1,2)      

    1.      对象=类名()自动执行__init__   括号内可传值

      obj=foo(实参)

    2.     对象() 自动执行__call__

      obj(实参,关键字实参)      如果上面有return  也能打印返回值   a=obj。。。  print (a)

    3.对象 【】 自动执行__getitems__

    obj【‘实参’】    打印这个实参   如果上面有return  也能打印返回值   a=obj。。。  print (a)

    4.对象 【】 自动执行__setitems__

     obj【‘xx’】=11             这个没有返回值 a=obj【x】=2  这个导致a 和x都等于2

    5。del   对象【xx】   自动执行__delitem__

    del  obj【‘aa’】               这个也没有返回值

    6。对象+对象            自动执行__add__

    obj1=foo(1,2)

    boj2=foo(8,9)

    obji1+obj2       a=obj1+obj2   print(a)

    7.with 对象

    obj=foo(1,2)        obj=foo(1,2)

    with obj:          with obj  as   f:

      print(‘中间’)          print(f)  这个f就是返回值    类似文件操作

    8.真正的构造方法

  • 相关阅读:
    [导入]自由的生活
    [导入]宁静
    [导入]书店
    [导入]娶老婆的15条金科玉律
    [导入]静静的日子
    [导入]生活无聊的日子
    [导入]新的任务
    [导入]问题:我是一个内向的男生。请问怎么追求自己喜欢的女孩
    [导入]奋斗
    java 多种方式文件读取
  • 原文地址:https://www.cnblogs.com/Mrszhao/p/9561646.html
Copyright © 2020-2023  润新知