python3小白课:定义类和实例化对象

搞懂面向对象之后,我们来开始讲python中的类如何定义,首先我们需要先定义类,才能通过类来实例化对象。

在python中,定义类的语法如下:

class 类名:
    执行语句、类变量、类方法等

我们可以看到,定义一个类的关键字为class,类名的命令跟之前变量命名差不多,但一般约定俗成,类名是一个或多个有意义的单词连缀而成的,中间没有分隔符,每个单词的首字母大写,其他字母全部小写,比如XiaoBai

类之内可以写一些执行语句、定义变量、定义方法(需要注意该缩进的地方缩进),定义方法使用的也是def关键字,跟平时定义一个函数差不多,但形参定义时有一点小小的不同,这个后面会讲解。

如果类中没有任何内容,或者暂时不添加代码内容,你可以使用pass关键字来先占位。

我们来看一个小例子来讲解细节:

# coding:utf-8
class Student:
    """这个地方可以定义类的帮助文档"""
    # 定义类变量
    sex = "男男男"
    # 定义构造函数
    def __init__(self, name, age=18, sex="男"):
        # 实例的变量,区别于类变量
        self.name = name
        self.age = age
        self.sex = sex
    # 定义一个其他方法
    def info(self):
        print(Student.sex)
        print("姓名:{},年龄:{},性别:{}".format(self.name, self.age, self.sex))
# 查看帮助文档
help(Student)
# 实例化对象
s = Student("小白", 19)
s.info()
print(s.name, s.age, s.sex)
# 可以赋值
s.name = "小黑"
s.info()
# 调用类变量需要加上类名
print(Student.sex)
  • 首先我们使用了class关键字定义了一个Student类,里面可以定义类帮助文档、类变量和方法,我们可以发现,定义的类变量在调用的时候需要加上类名。
  • 类中一般会定义一个__init__的构造函数,它也是python系统中内置的特殊方法。这个函数在实例化对象的时候会自动调用,通常一个类会包含这个函数,并且会在这个函数中初始化一些实例变量。首先我们可以注意到每一个方法的第一个形参都是self,即使在没有参数应传入的方法中也是如此,这是类的方法跟普通函数的定义的不同之处。为什么要这样呢?类的方法一般会通过实例化后的对象进行调用,self表示调用它的对象本身,调用方法时对象会自动绑定到第一个形参中去,调用时从第二个形参开始传递参数即可。这是约定俗成的,你记住就行,更深入的探究可以结合后面的课程或者查阅资料来理解。

[!tip]

实际也不一定要用self可以用别的,在类中统一即可,但约定俗称用self,这样具有最好的可读性,在某些IDE中也能自动进行处理。

  • 我们需要注意,实例变量跟类变量是不同的。所以self.sexsex是不同的,类变量一般在方法之外定义,一般来讲不同的实例会共用一份,可在外部赋值修改,使用类名来调用它,如Student.sex,直接用sex不行。而实例变量的话是像self.sex这样的,一般在构造函数中创建。我们可以创建多个实例,每个实例都可以设定自己的sex值。调用时使用实例名.sex调用,比如我们的实例名为s,那就是s.sex即可。如果有需要,我们也可以在外部代码添加实例变量,比如在外部代码中增加一句s.nickname = "小白白",这样这个实例就多了一个新的实例变量了。
  • 在实例化对象的时候,我们可以自行设定一个实例名(变量),初始化之后,就可以使用该实例名来调用该实例下的实例变量和方法了。比如这里我们使用s作为实例名。创建实例之后,我们可以给取现有的实例变量的值,也可以赋值。甚至还可以定义新的实例变量,但使用范围仅限于该实例。
Copyright © 雪山凌狐教程 all right reserved,powered by Gitbook该文件修订时间: 2020-09-19 12:38:52

results matching ""

    No results matching ""