python零基础到实践——类

在这里插入图片描述

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

特别说明,以上类成员部分代码来源于Python 类的特殊成员解析

类的还有很多需要学习的,但是目前需要掌握的这么多就够了,大家可以根据自己的情况进行学习。

**文章导航:**

零基础学Python教程
在这里插入图片描述

发布了43 篇原创文章 · 获赞 57 · 访问量 6101

猜你喜欢

转载自blog.csdn.net/qq_45172832/article/details/104534322
今日推荐