请稍候,加载中....

类的基本定义

类是程序世界描述客观世界的一种方法, 是面向对象编程的基础

面向对象

在之前的面向过程中, 变量、函数都是一些独立的过程代码, 之间没有特别的联系

比如如下一段代码

legs = 2
def walk():
      print("直立行走")

从代码上看不出这段程序描述的意义, 但是实际上,这段代码希望描述人的特征, 但是legs与walk函数看不出来之间的关系

面向对象编程就不一样了, 它将一组变量与函数组织起来描述一个客观事物, 这就是对象思维

类的定义

类就是客观事物的类别, 比如: 人类, 兽类, 禽类.

在程序里通过对一组变量与函数的封装,来创建一个类别的模版, 这个模版包含了这类事物的特征属性与特有行为规则.

模版就称为, 在类内部的数据成员称为类的属性, 内部的函数称为类的方法

###########################################################################
# 类的定义关键字是class                                                      #
# 类名,与定义函数一样需要函数名                                               #
# 冒号:不能少                                                              #
# 类的属性,可以是一个变量,也可以是一个函数                                     #
# 函数在类内部称为类的方法                                                    #
# #########################################################################
class ClassName:
    property_1 = "属性"
    def hello(self):
        print("hello")


# 定义一个名为Person的类
# 类名建议使用驼峰法,并且首字母大写

class Person:
    # 类属性,只要是正常人类的一员,都有这些相同的特征
    legs = 2
    feet  = 2
    head = 1
    fur = 0
    # 一个类可以包含任意多的变量与方法
    # 方法的第一个参数(self),指的是对象实例自身,实际调用时,该参数不用显式传递
    # 与函数一样,类的方法调用才会被执行,要调用walk这个方法,需要对类进行实例,然后由实例来调用类的方法
    def walk(self):
        print("walk by feet")

在上面这段代码中定义了一个Person类,拥有四个变量 - legsfeetheadfur,一个方法 - walk,当然真正的人类有很多特征,但是我们往往只抽取必要的部分,至于什么是必要的,取决于你在解决什么问题。

类的实例

类代表了某一类具有相同属性的事物,但是具体到某一个事物的时候,属性值是不一样的,每一个事物都是类的一个实例。

获得一个类的实例,只要使用()就可以完成实例化

# 与函数调用类似,类通过()完成实例化
# person就是Person的一个实例,可以用来调用类方法
person = Person()

# 通过实例来调用类方法
# 实例对象通过一个"."符号来调用,这个称为点语法
person.walk()

# 类本身不能直接调用方法
# 下面用法会报错
Person.walk()

# 可以通过点语法获取类属性
# 类名.类变量名
Person.legs
Person.feet
person.walk()

__init__方法

我们对上面这个类并不是太满意,因为实例出来的person到底是谁不知道,男的女的也不知道,我们对类进行改造一下,加入初始化,在初始化的时候可以对实例的属性进行赋值。

给类添加初始化方法

class Person:
    legs = 2
    feet = 2
    head = 1
    fur = 0
    # 加入了__init__方法
    # 当类实例化的时候,会自动执行此方法
    # self关键字指对象实例自身
    # self.name, self.sex称为实例属性,属于每个实例
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

    def walk(self):
        print(self.name, " walk by legs")

    def hello(self):
        print(f"my name is {self.name}, my age is {self.age}")

上面这段我们加入了__init__方法,从名称上可以看出这是一个初始化的方法,当类进行实例的时候,首先执行这个__init__方法, ,name,sex是初始化传入的参数,,他们是每个实例自有的属性,不是类的公共属性

带有初始化方法的person实例化

# 实例化一个名叫翠花的Person
# 当执行实例化的时候,“翠花”与“女”及18这几个实参传给了__init__方法
cuihua = Person("翠花", "女", 18)

# 实例化一个名叫平哥的Person
pingge = Person("平哥", "男", 28)

# 通过实例化,就具体的创建了两个对象,代表两个人类个体
# 调用实例方法
cuihua.hello()
pingge.hello()

# 访问实例属性
# 注意区分类属性与实例属性
# 类属性为同一个类所有成员共有的属性
# 实例属性通过self点语法赋值与访问,绑定在具体的实例上,每个实例可以具有不同的属性
print(cuihua.sex)
print(cuihua.age)
print(pingge.sex)
print(pingge.age)

通过类,可以高度组织代码,并且将一组变量与方法封装起来,提高了代码的可维护性与程序的健壮性

类定义练习

只有通过多练习才能真正提高自己的编程能力,边看边练,必能成功

# 练习1: 定义商品类
# 定义一个类,描述商品,商品的变量属性有商品名称,商品型号,商品价格,生产日期
# 实例化的时候需要传入:商品名称、商品型号、商品价格、生产日期
# 需要定义实例方法:获得商品价格的方法、修改商品价格方法


# 练习2: 定义数据处理类
# 该类实例化的时候,可以传入任意数量的实参
# 提供一个方法:输出初始化实参中的所有数字类型的参数值

Python学习手册-