码迷,mamicode.com
首页 > 其他好文 > 详细

类中的变量

时间:2018-06-02 19:37:40      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:font   ##   elf   类的属性   类变量   输出   局部变量   空间   list   

类变量和类的属性:
如下代码所示:
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__()方法:


 

 

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方法。

 

类中的变量

标签:font   ##   elf   类的属性   类变量   输出   局部变量   空间   list   

原文地址:https://www.cnblogs.com/z18271397173/p/9126273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!