1.类变量

下面介绍类变量的两种定义方式、两种读取方式、在类里面的调用方式

定义

1.类里定义的,与构造函数、普通函数是一个级别缩进的。(下面例子里的num

2.在类外定义的,直接用类名.变量名新增类变量。(下面例子里的myvar

读取

1.直接用类名的属性 获取:类名.类变量  (下面例子里的Member.numMember.myvar

2.先实例化类,实例化对象的属性 获取 :实例对象.类变量 (下面例子里的M.numM.myvar

调用

1. 在类里面调用:类名.类变量,不能直接用类变量,即应为Member.num而不是num

# -*- coding: utf-8 -*-
class Member():
    num=2 #类变量,可以直接用类调用,或用实例对象调用
    def __init__(self,x,y):
        self.x=x  #实例变量(成员变量),需要它是在类的构造函数内以self.开头来定义的
        self.y=y


    def add(self):
        total=2  #局部变量
        self.vara=3  # 虽是以self.给出,但并没有在构造函数中进行初始化
        self.varb=4
        fina=(self.x+self.y)*total
        return fina

    def fuc(self,a,b):
        self.varc=a #成员变量,他们在成员函数fuc()中定义
        self.vard=b
        self.x+=2
        self.y+=2
        self.vara+=3  
        self.varb+=Member.num

Member.myvar = 'huhuh'
print(Member.num,Member.myvar)

M=Member(1,2)
print(M.num,M.myvar)

2.实例(成员)变量

(1)构造函数里的成员变量:

定义:在__init__(self,成员变量)

读取:只能实例对象.成员变量,不能类名.成员变量,即只能M.x不能Member.x

调用:构造函数的成员变量,顾名思义:在类实例化的时候,就需要给该变量赋值。类里的普通函数可直接调用该变量,方式为:self.成员变量,

作用范围类里面的全局变量,其值可以被其他函数修改

(2)普通函数里的成员变量

定义:在类里的普通函数def xxx(self,成员变量)

读取:只能实例对象.成员变量,不能类名.成员变量,即只能M.vara不能Member.vara

调用:方式为self.成员变量,只有在类实例化后调用该普通函数,此时,该成员变量才会生,看下面的例子:必须先调用add函数后,fuc函数里的self.vara和self.varb才会正常执行,不报错。

作用范围类里面的全局变量,其值可以被其他函数修改

3.局部变量

局部变量相对就简单很多了,跟不在类里面的def函数的局部变量是一样的。

 作用范围:该函数内部

 

总结:成员函数

1.不同点

(1)构造函数里的成员变量,在类实例化之后,就可以使用

(2)在类里普通函数里的 成员变量,只能先调用该函数,才能使用该成员变量。

2.相同点:

(1)在类里,都是全局的

 

Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐