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'>

  • 相关阅读:
    当别人没说好,那么事就没达成协定
    设计模式(六):原型模式
    《一拳超人》观后感
    设计模式(五):中介者模式
    设计模式(四):单例模式与工厂模式
    设计模式(二):构造器模式与模块模式
    设计模式(一):概念小谈
    CSS代码记录
    java之如何实现调用启动一个可执行文件,exe
    file类之目录
  • 原文地址:https://www.cnblogs.com/z18271397173/p/9126273.html
Copyright © 2011-2022 走看看