88_object根类

92.object根类

object 类是所有类的父类,因此所有的类都有object 类的属性和方法。我们显然有必要深 入研究一下object 类的结构。对于我们继续深入学习Python 很有好处。

dir()查看对象属性

为了深入学习对象,我们先学习内置函数

dir(),他可以让我们方便的看到指定对象所有的 属性。

从上面我们可以发现这样几个要点:

  1. Person对象增加了六个属性:__dict__ , __module__, __weakref__, age, name, say_age
  2. object的所有属性,Person 类作为object 的子类,显然包含了所有的属性。
  3. 我们打印agenamesay_age,发现say_age
    虽然是方法,实际上也是属性。只不过, 这个属性的类型是“method”而已。
age <class 'int'> 

name <class 'str'> 

say_age <class 'method'>

【注】关于 object这些属性的详细学习,会在后面学习中逐个涉及。在此,无法一一展开。

重写__str__

object 有一个__str__()方法,用于返回一个对于“对象的描述”,对应于内置函数 str() 经常用于 print()方法,帮助我们查看对象的信息。__str__()可以重写。

【测试】查看对象所有属性以及和object 进行比对


class Person:  # 默认继承object类

    def __init__(self, name):
        self.name = name

    def __str__(self):
        return "名字是:{0}".format(self.name)  # 这里是 重写了 object 的方法


p = Person("onepis")
print(p)
print(dir(p))



# output 

名字是:onepis # print(p) 的输出
['__class__', 
'__delattr__', 
'__dict__', 
'__dir__', 
'__doc__', 
'__eq__', 
'__format__', 
'__ge__', 
'__getattribute__',
 '__gt__', 
 '__hash__', 
 '__init__',
  '__init_subclass__',
   '__le__', 
   '__lt__', 
   '__module__', 
   '__ne__',
    '__new__',
     '__reduce__',
      '__reduce_ex__', 
      '__repr__', 
      '__setattr__', 
      '__sizeof__', 
      '__str__', 
      '__subclasshook__',
       '__weakref__', 
       'name']

帮助理解 __str__

In [3]: class Person:
   ...:     def __init__(self,name,age):
   ...:         self.name=name
   ...:         self.age=age
   ...:

In [4]: Person("onepis","27").__str__()
Out[4]: '<__main__.Person object at 0x0AD7D3F0>' # 没有重写 返回的默认的是这样的。

In [5]: a=Person("onepis","27")

In [6]: print(a)
<__main__.Person object at 0x0ADEE570>

# ---------------------------------------------------


In [7]: class Person:
   ...:     def __init__(self,name,age):
   ...:         self.name=name
   ...:         self.age=age
   ...:     def __str__(self):
   ...:         return f"this is a Person object"
   ...:

In [8]: Person("onepis","27").__str__()
Out[8]: 'this is a Person object' # 重写后返回的是我们 自己想返回的内容。


In [9]: a=Person("onepis","27")

In [10]: print(a)
'this is a Person object' # 重写后返回的是我们 自己想返回的内容。

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值