zoukankan      html  css  js  c++  java
  • [python 基础] Class 一些基本概念

     class example(object):
        data1 = ''
        date2 = ""
                
        def __init__(self, para):
            self._function1()
    
        def _function1(self):
            self.data1="test data"
        print example().data1

    1.根据需要可以把类里面的全局变量定义在最前面(data1,data2),内部function可以用self.方便直接修改数据。如果一个类里面有公共数据使用此方法比较方便,外部可以通过访问对象属性方法直接访问类里面数据。

    2. 根据需要可以将类的内部方法调用写在__init__方法里面,这样可以避免外部显示调用内部类里面的方法,使代码更加简洁,清楚。__init__方法会在类实例化时候自动执行,类似于一个C++构造函数。

    3. 访问内部的数据、方法,需要加self.

    4. 只有将类实例化后,才能访问到里面的方法。如果使用example.data1的方法,data1的内容不会改变,因为只是访问了类的一个属性,并没有将类实例化,因此内部_function1()也没有被执行

    5.类内部定义的方法不能直接调用,否则会引发NameError的异常。

    关于self参数

    1.self 是类下面的一个object,通常指的是定义这个类。如果定义一个类:

     

        class MyInt(object):
            varA = "1"
            def __getitem__(self, key):
                print type(self)
                print "this is self value:"
                print self
        a = MyInt().__getitem__("4")

     

    打印结果:

    <class '__main__.MyInt'>
    this is self value:
    <__main__.MyInt object at 0x01BA6630>

    可以看到self打印出来是一个'__main__.MyInt'的对象。实际上self应该是 一个MyInt的类。如第一个例子所示,在需要调用上一层类里面定义的方法和数据的时候,需要用"self."表示。有人觉得self在类里面的函数作为第一个默认参数多此一举,其实不然;如果没有self这个对自己类的应用,每次用写类名的方法(e.g:MyInt.varA)去调用方法和变量会更显得麻烦。

    关于继承

        class MyInt(int):
            def __getitem__(self, key):
                return key + str(self)
        a = MyInt(1)
        b = MyInt(2)
       print a['key']

    打印输出结果是:“key1”。从这段代码可以看出,虽然a并不是一个字典类型,但是由于MyInt 这个类里面重构了字典内建的查询方法__getitem__(). a['key']仍然执行成功了,也可以推断出,一个字典类型数据在执行dic[key]这个语句时候实际上是在调用内建方法__getitem__()获取到的value,并且也可以推断出python在执行a['key']这一条语句时候,并不会事先去判断这个数据是否是字典类,而是会直接去调用__geitem__()这个内建方法。采用这种重构的方法可以自定义python里面的数据类型,不过一般不建议使用。因为很容易造成代码混乱。

     

  • 相关阅读:
    事件溯源的使用实例
    CQRS With Axon
    maven打包带依赖
    MongoDB Query语法和工具
    docker 在外部指定参数变量 spring
    logger 过滤部分类的logger
    Nginx ServerName指令
    Nginx 处理Http请求简单流程
    Listen 指令
    Nginx 配置
  • 原文地址:https://www.cnblogs.com/xiaoqu/p/3255474.html
Copyright © 2011-2022 走看看