zoukankan      html  css  js  c++  java
  • 类中的变量

    类变量和类的属性:
    如下代码所示:
    x=1
    class
    Test: x = 1
    def __init__(self): self.y
    = 2

    def create():
    j=1

    x即为类Test的变量,各个Test的实例中的x都是一样的,而y为Test的属性,每个Test实例的y都是独立的。

    类中的变量:

    a.全局变量:在模块内,在所有函数外又在class外面,就是全局变量。就如class 外的x

    b.局部变量:在函数内,在函数内或在class的方法内(未用self修饰的),这是局部变量。在上面就是变量j

    c.静态变量:在class内,但是不在class的方内。就是上面的class中的x

    d.实例变量:在class的方法内,用self修饰过的,就是self.y

    类和对象的命名空间

    这里需要简单了解一下python的命名空间。

    python中,命名空间是名字到对象映射的结合,不同命名空间中的名字是没有关联的。这种映射的实现有点类似于python中的字典

    根据上下文的不同,可以通过"."或者是直接访问到命名空间中的名字。举个例子

    class MyClass(object):
        # 在类的命名空间内,不需要用"."访问
        class_var = 1
        
        def __init__(self, i_var):
            self.i_var = i_var
    
    ## 不在类的命名空间内,需要用"."访问
    MyClass.class_var
    ## 1

    python中,类和对象都有自己的命名空间,可以通过MyClass.__dict__是输出类的数据属性和函数属性(以字典的形式)

    a = MyClass(3)

    a.__dict__

    是输出对象的属性 。

    关键点:类无法访问对象实例的属性,但对象可以访问类属性(类变量)

    关于初始化__init__()方法:

     

    1.先产生一个空对象

    2.类调用__init(空对象,参数)

     在python3中:一切皆对象

    l1=[1,2,3]
    l1.append(4)
    print(l1)
    l=list([3,4,5,6])
    l.append(11)
    print(l)

    结果:

    [1, 2, 3, 4]
    [3, 4, 5, 6, 11]

    l1直接定义,默认append方法。而按照实例的模式list()。对象l也默认append方法。

    print(list)
    print(type([1,3]))
    结果:

    <class 'list'>
    <class 'list'>

  • 相关阅读:
    通过class定位打包后的resour路径
    maven-antrun-plugin
    maven-shade-plugin Premain-Class
    mac settings 在idea位置
    (第七天)[js] 统计某一字符或字符串在另一个字符串中出现的次数
    (第六天)[jS] 写一个去除制表符和换行符的方法
    (第五天)[js] 写一个把字符串大小写切换的方法
    (第四天)[js] 写一个方法把下划线命名转成大驼峰命名
    (第三天)[js] 去除字符串中最后一个指定的字符
    详解python中的*与**用法
  • 原文地址:https://www.cnblogs.com/z18271397173/p/9126273.html
Copyright © 2011-2022 走看看