Python教程

python-类的基础知识

本文主要是介绍python-类的基础知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

python-类的基础知识

  • 类的定义
  • 类对象
  • 变量
    • 类变量
    • 局部变量
    • 实例变量
  • 类的方法
    • 特殊方法

类的定义

/*
	class是定义类的关键字,ClassName为类的名称
*/
class ClassName:
	// 在这里写其他内容
	pass

class ClassName(Object):
	// 在这里写其他内容
	pass

这是一个最简单的类定义,在python3后类定义一般都会继承Object类,不过不继承也没有多大的问题。

类对象

类对象也称实例

// 这就是创建了一个类对象(实例),a是一个实例也是一个对象
a = ClassName()

变量

类内部里面有:类变量,局部变量,实例变量

类变量

类变量:所有类的实例化对象都同时共享类变量,也就是说,类变量在所有实例化对象中是作为公用资源存在的。

class ClassName(Object):
	// 定义一个类变量
	name = "Tom"

类方法的调用方式有 2 种,既可以使用类名直接调用,也可以使用类的实例化(对象)调用。可以通过类名修改类变量的值,并且修改后,会影响所有的实例化的对象。

// 直接通过类名调用
print(ClassName.name)
// 创建类的实例(对象)
a = ClassName()
b = ClassName()
// 通过类的实例调用
print(a.name)
print(b.name)
ClassName.name = "Tim"
print(a.name)
print(b.name)

运行结果为:

Tom
Tom
Tom
Tim
Tim

但如果实例的类变量的值修改后,在通过类名修改变量的值,不会影响这个实例的类变量。

a = ClassName()
b = ClassName()
a.name = "asf"
ClassName.name = "Pig"
print(a.name)
print(b.name)
ClassName.name = "aaa"
print(a.name)
print(b.name)

运行结果:

asf
Pig
asf
aaa

通过运行结果可知,在对象a改变name值后,再调用Class Name.name = "Pig"对象a的name变量值没有改变


局部变量

局部变量:局部变量只定义在类方法内,也只能在方法内使用

class ClassName(Object):
	// 这是一个方法
	def function(self):
		// 这是一个局部变量
		name = "Tom"

name定义在类方法内,所以是局部变量,在外部是无法调用,只能在方法内使用。


实例变量

实例变量:以self.变量名的方式定义的变量,称为实例变量(属性)

class ClassName(Object):
	// 这是一个实例变量
	def function1(self):
		self.name = "Tom"
	def function2(self):
		print(self.name)

只作用于调用方法的对象,可以在其他方法内调用。

className = ClassName()
className.function()

运行结果:

Tom

如果定义在__init__()方法中的实例变量,可以同过只能通过对象名访问。

class ClassName(Object):
	def __init__():
		self.name = "Tom"

className = ClassName()
print(className.name)

运行结果:Tom

私有变量
__name这就是私有变量,在变量前面加两个_self.__name也是私用变量,私有变量在类外部无法直接进行访问。

类的方法

在类里面用def关键字来定义方法,也叫函数。与普通方法的区别是,必须需要一个self的参数,self代表类自身

class ClassName(Object):
	def function(self,a):
		pass

特殊方法

1.__init__()用来初始化类的参数一般叫构造方法
这个方法,我们一般类都会用到。

class ClassName(Object):
	def __init__(self):
		self.name = "aaa"

当类实例化时,会自动调用__init__

2.__call__()将对象当做函数时调用。

class ClassName(Object):
	def __init__(self):
		self.name = "aaa"
	def __call__(self):
		print("aaa")

c = ClassName() // 类实例化,执行了__init__()方法
c() //执行了__call__()方法

3、__get__()类作为另一个类的属性时自动调用

class ClassName:
	def __init__(self):
		pass
	def __get__(self,instance, owner):
		print("__get__调用了")

class ClassName2:
		a = ClassName()

运行结果:__get__调用了
等等还有很多

这篇关于python-类的基础知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!