Python dir 内置函数(知道)引用概念

1、在 python 中 对象集合是无所不在的,我们之前学习的变量、数量、函数 都是对象;
在 Python 中可以使用以下两个方法验证:
1)、在 标识符/数据 后输入一个,然后按下 TAB 键,IPython 会提示该对象能够调用的 方法列表;
2))、使用内置函数 dir 传入 标识符/数据,可以查看对象内的 所有属性及方法;
提示:
**方法名**格式的方法是 Python 提供的 内置方法/属性 ,稍后会给大家介绍一些常用的 内置方法/属性。
在这里插入图片描述
提示:利用好 dir() 函数,在学习时很多内容就不需要死记硬背!

2、定义简单的类(只包含方法)
面向对象 是 更大 的 封装,在 一个类中 封装 多个方法,这样 通过这个类创建提出来的对象,就可以治具调用这些方法。

2.1 定义值包含方法的类
在Python 中要定义一个值包含方法的类语法格式如下:

class 类名:
     def 方法1(self,参数列表);
     pass
     def 方法2(self,参数列表);
     pass

方法 的定义格式和之前学习过程函数 几乎一样;
区别在于第一个参数必须是 self,大家暂时先记住,稍后介绍 self;
注意:
类名 的 命名规则 要符合 大驼峰命名法;

2.2 创建对象
当一个类定义完成之后,要使用者各类来创建对象,语法格式如下:

对象变量 =  类名()

2.3 第一个面向对象程序
需求
小猫 爱 吃鱼,小猫 要 喝水;
分析:
定义一个猫类 Cat;
定义两个方法 Cat 和drink;
按照需求 — 不需要定义属性;

class Cat:

    def eat(self):
        print("小猫爱吃鱼")

    def drink(self):
        print("小猫爱喝水")

# 创建对象
tom = Cat()

tom.eat()
tom.drink()

3、引用概念的强调
在面向对象开发中,引用的概念是统一适用的!
在 Python 中使用类 创建对象之后, tom 变量中 仍然记录的是 对象在内存中的地址
也就是 tom,变量 引用 了 新建的猫对象
使用 print 输出 对象变量,默认情况下,是能够输出这个变量 引用的对象 是 由哪一个类创建的对象,以及 在内存中的地址(十六进制表示)
提示:在计算机中,通常使用 十六进制 表示 内存地址;

十进制 和 十六进制 都是用来表达十足的,只是表示的方式不一样;
十进制 和 十六进制 的数字治具可以来回转换;

%d 可以以 10进制 输出数字;
%x 可以以 16进制 输出数字;

案例进阶 ---- 使用 Cat 类再创建一个对象;
lazy_cat = Cat()
lazy_cat.eat()
lazy.cat.drink()
提问:tom 和 lazy_cat 是统一个对象吗?

class Cat:

    def eat(self):
        print("小猫爱吃鱼")

    def drink(self):
        print("小猫爱喝水")

# 创建对象
tom = Cat()

tom.eat()
tom.drink()

print(tom)

# 再创建一个猫对象
lazy_cat = Cat()

lazy_cat.eat()
lazy_cat.drink()

print(lazy_cat)

4、方法中的 self 参数
3.1 案例改造 ---- 给对象增加属性
在Python 中,要 给对象设置属性,非常的容易,但是不推荐使用;
因为:对象属性的封装应该在类的内部;
只需要再 类的外部的代码 中直接通过,设置一个属性即可。
注意:这种方式虽然简单,但是不推荐使用!

class Cat:

    def eat(self):
        # 哪一个对象调用的方法,self 就是哪一个对象的引用
        print("% s 小猫爱吃鱼"% self.name)

    def drink(self):
        print("%s 小猫爱喝水"%self.name)

# 创建对象
tom = Cat()

# 可以使用,属性名,利用赋值语句就可以
tom.name = "Tom"


tom.eat()
tom.drink()

print(tom)

# 再创建一个猫对象
lazy_cat = Cat()

lazy_cat.name = "大懒猫"

lazy_cat.eat()
lazy_cat.drink()

print(lazy_cat)

猜你喜欢

转载自blog.csdn.net/weixin_42291376/article/details/121841073