类操作
- 1、什么是类?类有什么作用?
- 2、类怎么定义?
- 3、类的调用
- 4、类的成员
- ==**文章导航:==**
hello大家好我是你们的朋友JamesBin,今天我们就要学习python中一个和函数一样重要的类,学习了类后我们的程序会更加的整齐和规范。在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念,对象才是一个具体存在的实体。从这个意义上看,日常所说的人,其实都是人的对象,而不是人类。下面让我们来看一下类的定义与使用。
1、什么是类?类有什么作用?
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。类中很很重要的关键词就是class,后面是类名,如果需要继承的话就把父类放在括号里,然后以冒号换行,接下来的缩进代码块就是类体。我们需要注意的是类是有构造函数的,__init__是python的构造函数,其参数是实例化是需要传入的参数。类成员是有属性的,共有变量和方法、私有变量和方法、保护变量和方法。
类的作用:总结就是封装、继承、多态,使用类,可以实现代码的复用,提高开发效率,节省时间。
2、类怎么定义?
上面我们已经知道了类是什么和类的作用,那如何定义一个类呢?下面让我们一起看看类是如何定义的吧。
定义类: 一般,使用 class 语句来创建一个新类,class之后为类的名称(通常首字母大写)并以冒号结尾,例如:
class 类名:
多个(≥0)类属性...
多个(≥0)类方法...
#注意,无论是类属性还是类方法,对于类来说,它们都不是必需的,可以有也可以没有。
3、类的调用
定义的类只有调用后才会被运行,所以类在被定义后一定要进行调用,类的调用和函数的调用类似,下面让我们来看一下类是如何调用的吧。
#定义一个类
class CLanguage:
def info(self):
print("我正在学 Python类")
#通过类名直接调用实例方法
clang = CLanguage()
CLanguage.info(clang) #这就是调用了类中的info函数的方法,其他的类推即可
运行结果:在这里插入代码片
可以看到,通过手动将 clang 这个类对象传给了 self 参数,使得程序得以正确执行。实际上,这里调用实例方法的形式完全是等价于 clang.info()。
“zhangsan” 这个字符串传给了 info() 方法的 self 参数。显然,无论是 info() 方法中使用 self 参数调用其它类方法,还是使用 self 参数定义新的实例变量,胡乱的给 self 参数传参都将会导致程序运行崩溃。
注意:
Python 中允许使用类名直接调用实例方法,但必须手动为该方法的第一个 self 参数传递参数,这种调用方法的方式被称为“非绑定方法”。
4、类的成员
Python 类中,凡是以双下划线 “__” 开头和结尾命名的成员(属性和方法),都被称为类的特殊成员(特殊属性和特殊方法)。例如,类的
init(self) 构造方法就是典型的特殊方法。
类的成员分类:
1、公有成员,在任何地方都能访问
2、私有成员,只有在类的内部才能方法,私有成员命名时,前两个字符是下划线。
3、公有静态字段:类可以访问;类内部可以访问;派生类中可以访问
4、私有静态字段:仅类内部可以访问;
示例:
class Foo:
def __init__(self, name, age):
self.name = name
self.__age = age
def show(self): # 间接方法私有字段
return self.__age
obj = Foo('klvchen', 25)
print(obj.name)
res = obj.show()
print(res)
运行结果:
klvchen
25
私有静态字段:仅类内部可以访问;
class Foo:
__v = '666' # 私有静态字段
def __init__(self):
pass
def show(self):
return Foo.__v
obj = Foo()
res = obj.show()
print(res)
运行结果:
666
类的特殊成员
int(对象),会自动执行对象中的__int__方法,并将返回赋值给 int 对象,同理
str(对象),会自动执行__str__方法,并返回赋值给 str 对象。
class Foo:
def __init__(self):
pass
def __int__(self):
return 666
def __str__(self):
return 'hello world'
obj = Foo()
print(obj, type(obj))
res = int(obj)
print(res)
res1 = str(obj)
print(res1)
运行结果:
<__main__.Foo object at 0x0000022BBE9DA978> <class '__main__.Foo'>
666
hello world
类的还有很多需要学习的,但是目前需要掌握的这么多就够了,大家可以根据自己的情况进行学习。