Python-面向对象编程-定义类&创建对象

201 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

1. 定义简单的类(只包含方法)

面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了。 Python中定义只包含方法的类,基本语法格式如下所示:

  • 类名要符合大驼峰命名法
  • 使用def定义方法,与定义函数比较相似,但是第一个参数必须是self
  • 若后面有参数就跟一个参数列表,如果没有参数就只要一个self
class 类名:
    def 方法1(self, 参数列表):
        pass
    def 方法2(self, 参数列表):
        pass

2. 创建对象

当一个类定义完成之后,若要使用这个类来创建对象,基本语法格式如下所示:

对象变量 = 类名()

等号前用一个变量来接收,类名后跟上一个小括号。这样,我们就能使用刚刚定义的类来创建对象了。

3. 实例演练

下面将进行面向对象程序演练。

程序需求:小猫鱼,小猫

根据需求进行如下初步分析:

  1. 定义一个猫类:Cat
  2. 定义两个方法eatdrink
  3. 按照需求--不需要定义属性 具体代码如下所示:

首先定义了猫类。然后在猫类中定义相应的方法。进而,创建猫对象。最后,通过对象调用方法。

class Cat:
    # 定义吃鱼的方法
    def eat(self):
        print("小猫爱吃鱼")
    
    # 定义喝水的方法
    def drink(self):
        print("小猫要喝水")


# 创建猫对象
tom = Cat()

# 对象调用方法
tom.drink()
tom.eat()

程序运行结果如下图所示:

image.png

4. 面向对象开发中的引用

在面向对象开发中,引用的概念是同样适用的!

在Python中使用类创建对象之后tom变量中仍然记录的是对象在内存中的地址。也就是tom变量引用了新建的猫对象。

使用print输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)

注意:

  • %d可以以10进制输出数字
  • %x可以以16进制输出数字
  • 在计算机中,通常使用十六进制表示内存地址,十进制十六进制都是用来表达数字的,只是表示的方式不一样。十进制和十六进制的数字之间可以来回转换。

下面将对面向对象编程开发中引用进行代码演示:

# 输出变量
print(tom)

# 使用id函数查询数据在内存中的地址
addr = id(tom)
print("以十进制输出:%d" % addr)
print("以十六进制输出:%x" % addr)

程序运行结果如下图所示:

image.png