26 - 面向对象3 - 内置函数dir()和方法__str__()

目录

一、内置函数:dir()

1、作用

2、语法

3、应用场景

4、注意

5、举例说明-dir()

6、举例说明-dir(对象变量)

二、内置方法:__str__()

1、作用

2、调用时机

3、语法

4、应用场景

5、举例说明


一、内置函数:dir()

1、作用

  • 可以查看对象内定义的标识符,如函数、类、变量。
注意:模块也是对象!!!

2、语法

  • 返回对象的属性列表。
  • 当为dir函数提供一个对象名时,它返回对象中定义的属性名、方法名、类名的列表。
  • 如果不给dir提供对象名,它返回当前对象中定义的属性名、方法名、类名的列表。

3、应用场景

  • Python中有很多模块,有时候搞不清或者记不住这些模块包含属性和方法,一个个查看会很麻烦,这时就可以使用dir函数,了解对象的构造。

4、注意

  • dir()函数不具备输出功能,需要和print()函数配合使用。

5、举例说明-dir()

class Cat:
    def __init__(self,name):
        # 添加name属性
        self.name = name

    def eat(self):
        print(f'{self.name}爱吃鱼...')


tom = Cat('黏黏')
"""
1.不给dir函数提供对象变量-->所以结果打印当前模块(Cat.py)中的函数,变量,方法,类等的名称
print(dir()):
    ['Cat', '__annotations__', '__builtins__', '__cached__', '__doc__', 
    '__file__', '__loader__', '__name__', '__package__', '__spec__', 'tom']
"""
print(dir())

6、举例说明-dir(对象变量)

import Cat

class Dog:
    def __init__(self, name):
        # 添加name属性
        self.name = name

    def play(self):
        print(f'{self.name}爱玩皮球...')

dog1 = Dog('狗子')
"""
1.不给dir函数提供对象变量-->所以结果打印当前模块(Dog.py)中的函数,变量,方法,类等的名称
print(dir()):
    ['Cat', 'Dog', '__annotations__', '__builtins__', '__cached__', '__doc__', 
    '__file__', '__loader__', '__name__', '__package__', '__spec__', 'dog1']
"""
print(dir())
"""
1.给dir函数提供对象变量名,所以结果打印Cat.py模块中的函数,变量,方法,类等的名称
print(dir(Cat)):
    ['Cat', '__builtins__', '__cached__', '__doc__', '__file__', 
    '__loader__', '__name__', '__package__', '__spec__', 'tom']
"""
print(dir(Cat))

二、内置方法:__str__()

1、作用

  • 返回对象的描述信息,print函数输出时使用。

2、调用时机

  • 使用print(对象) 打印对象时,会自动调用。
注意:
(1)如果没有定义__str__()方法,默认打印的是,对象的引用地址,也就是对象变量在内存中存储空间的地址。
(2)如果定义__str__()方法,打印的是 方法的返回值。

3、语法

注意:__str__方法必须返回一个字符串数据。

4、应用场景

  • 打印输出对象的属性信息,使用print(对象)。

5、举例说明

"""
定义Cat类,包含属性name和age,打印对象的时候,可以输出对象的姓名和年龄。
类名:Cat
属性:name,age
方法:__str__(),__init__()
"""
class Cat:
    def __init__(self,name,age):
        # 添加name属性
        self.name = name
        #添加age属性
        self.age = age
    # 一般不使用print,直接返回
    def __str__(self):
        return f'姓名:{self.name},年龄:{self.age}'

# 创建对象
tom = Cat('汤姆',3)
"""
1.类中不定义__str__方法时,
print(tom)的结果是:
    <__main__.Cat object at 0x00000000004B25C0>
2.类中定义__str__方法时,
print(tom)的结果是:
    姓名:汤姆,年龄:3
"""
print(tom)

三、return和print的区别

  • print: 只是打印输出,将内容显示到控制台, 代码中大多数的 print 都是为了验证结果
  • return: 可以将函数中的数据返回到函数外部,可以进行其他的操作(print, ....) 将来的代码 如果存在数据,大多数都是 return。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值