哲♂学——万物皆对象 everything is object

哲♂学——万物皆对象 everything is object

1.万物皆对象

2.对象皆有类型

3.程序由一堆对象组成,对象间通过发送消息协同工作

4.每个对象都有自己的存储空间,并由其他对象构成

5.相同类型的对象可以接受相同类型的消息

函数是对象
def foo(x):
    'function foo'
    return x*x
func =foo
print(type(foo),foo)
print(foo.__doc__)
print(func(2))
<class 'function'> <function foo at 0x0000025B779C4558>
function foo
4
类是对象 (当然,类也可以实例化为对象)

通俗的讲,人是对象,人这个概念也是对象

class A:
    'class A'
    def __init__(self):
        print('A is init')
    def method1(self):
        print('method 1 ok')
print(type(A),A)
print(A.__doc__)
A2 =A
a2 = A2()
a2.method1()
<class 'type'> <class '__main__.A'>
class A
A is init
method 1 ok

类属性&实例属性

类属性是“类class”作为一个对象所有的。 Tomato.objectCount
这个属性不是类对象(下文的T1,T2)的属性,而是类Tomato的属性。

实例属性是某个类下面每个对象各自拥有的T1.objectCount
当访问T1.objectCount,没有实例属性,将寻找所属类属性Tomato.objectCount

def smile():
没有self此函数不依赖对象,和具体哪一个西红柿没关系
由于这个smile不依赖对象,可以视为一种类。
但注意和真正类的区别。这个smile只是Tomato的smile,前面加了一个前缀,大大提可读性

class Tomato:
    objectCount = 0#类属性。这个属性不是类对象(下文的T1,T2)的属性,而是类Tomato的属性,有且仅有一个
    def smile():
    #没有self,此函数不依赖对象,和具体哪一个西红柿没关系
    #这个smile不依赖对象,可以视为一种类。但注意和真正类的区别。这个smile只是Tomato的smile,前面加了一个前缀,大大提高程序的可读性
        print('tomato.smile(): without self parameter.')
    def __init__(self):
        Tomato.objectCount += 1#这是给Tomato这个类加属性
        #self.nbjectCount = 1是给具体的西红柿对象加属性
        a = self.objectCount #self一个实例对象没有objectCount属性,自动寻找类属性
        self.objectCount = 3 #此时实例对象将真正创建自己的实例属性

Tomato.smile()#没有对象,Tomato只是类
T1 = Tomato()
T2 = Tomato()
print('Tomato.objectCount:',Tomato.objectCount)
print('T1.objectCount:',T1.objectCount)#T1没有objectCount属性,自动寻找所属类的属性objectCount
tomato.smile(): without self parameter.
Tomato.objectCount: 2
T1.objectCount: 3
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值