类中的变量

类变量和类的属性:
如下代码所示:
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'>

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