|
发表于 2022-5-24 17:11:26
|
显示全部楼层
本帖最后由 阿奇_o 于 2022-5-24 17:31 编辑
一切皆对象,但 我们永远看不见 那个对象 —— 因为它本质是内存里的0和1
—— 我们只能通过用一个 字符(符号)名 来 绑定 那个内存对象所在的地址 ,再通过该地址读取到该地址上存储的 值 。
又为了更好地处理不同类型的值,计算机科学家们又把 这些值,分为若干个 基本数据类型 (数值型、字符型、浮点数型等)。
所以,一个对象,天然具有 代表其所在地址的id,其值value,其所属类型 type,以及99.99..%都会同时存在的、和它绑定的某个字符名字(不然你咋调用该对象)
所以,不太清楚时,就问自己:
- 这里什么字符名 跟 什么类型对象,进行了绑定? 这是什么类型、什么类?
- 我看见的是对象的 值吗? 还是代表该对象的某些特定字符值?
(print(obj)调用的是obj.__str__() 所返回的值,但__str__是可以自定义的! 而__repr__也可以自定义,那你知道:什么情况下会调用obj.__repr__() ? )
例子:
- class Person:
- def __init__(self, name, age, sex):
- self.name = name
- self.age = age
- self.sex = sex
- 张三 = Person(name='zs', age=20, sex='男')
- ----------请问-------------
- 1. 这里的对象/实例,在哪? "张三" 是该对象的什么? "张三"和该对象之间是什么关系?
- 那么,如何将"李四"也绑定到这个对象上? 这样"张三"和"李四"又是什么关系?
- 2. 该对象包含了哪些"值"(属性)?
- 3. print(张三) 返回什么? ——取决于你 在Person里 如何自定义 __str__ 。 (没有定义?那就调用父类的__str__)
复制代码
进阶理解:
- 函数也是对象(函数名就是所绑定的"符号名",函数体和参数等意味着其值和类型)。
- 类也是对象(类名就是所绑定的"符号名",……)
|
|