python变量和函数_python类中的变量和函数

本文详细介绍了Python类中的变量和函数。类变量可被类和实例访问,成员变量在__init__函数中定义,局部变量在其他函数中定义。类中函数包括普通函数、实例方法、静态方法和类方法,不同类型的函数对类变量和成员变量的访问权限不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类中的变量分三种:类变量,成员变量和局部变量。

类变量是在类下面直接定义的变量,类变量被类和实例访问。所有实例在对类变量赋值之前一直共享内存,赋值后就各自保存各自的类变量。

成员变量在__init__函数中定义的以self.开头,可以被实例访问。

局部变量是在别的函数下定义的可以self.开头也可以不以此开头。不能被访问

类中函数分四种:普通函数,实例方法,静态方法和类方法

普通函数,不能访问类中的任何变量。

实例方法:第一个参数是self。可以通过self.访问任何类参数。

静态方法: @staticmethod,不能访问类中的变量。

类方法:@classmethod在上一行,第一个参数传入的实例。通过第一个参数访问类变量和实例变量

类方法和静态方法可以被类直接使用。

class class_name(object):

class_var = 'I am a class variable' #(1):类变量

def __init__(self):

self.instance_var = 'I am a instance varibale' #(2):成员变量(实例变量)

def instance_method(self, formal_parameter):#<2>:实例方法,可以访问类变量和成员变量

local_var_in_function = self.class_var #(3):实例方法局部变量

self.local_var_also_in_function = self.instance_var #(3)实例方法局部变量

def ordinary_function(formal_parameter):#<1>普通函数

print ("I am an ordinary function, I can't vist class var and intance var")

print (self.instance_var) #报错,因此普通函数无法访问成员函数

print (clacc_var)#报错,因此普通函数无法访问类变量

@classmethod

def class_method(tls, formal_parameter): #<3>:类方法,第一个参数时传入类,可访问和修改类变量和成员变量,类变量以cls.开头

print ('I am class method, I can visit and modifying class var and instance var')

tls.instance_var = formal_parameter

print ('instance_var changed',tls.instance_var)

class_var = formal_parameter

print ('class_var changed',class_var)

@staticmethod#<4>:静态方法,不能访问成员变量和类变量

def static_method(formal_parameter):

print(formal_parameter)

print ('I am static method, I am the Adopted son(干儿子) for this class!!')

print ("I can't visit and modify anything in the class ")

#print class_var

#print self.instance_var

class_instance = class_name()#类的一个实例 #I am a class variable

print(class_name.class_var)#类访问类变量

class_name.class_var='changed by class'#通过类改变类变量

print(class_instance.class_var)#changed by class

class_name.class_var='changed by class secondly'#通过类第二次改变类变量

print(class_instance.class_var)#changed by class secondly

class_instance.class_var='changed by class instance'#通过实例类变量,分配内存给实例的类边,从此分开处理

class_name.class_var='changed by class thirdly'#通过类第三次改变类变量

print(class_instance.class_var)#changed by class instance

#print(class_name.instance_var)报错

print(class_instance.instance_var)#I am a instance varibale

#print(class_instance.local_var_in_function)报错

class_name.class_method('class visit class method')

class_name.static_method('class visit static_method')

print ('END!!')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值