python每日学16:世界上最简单的 Python 类

背景:今天继续学习《python学习手册》第27章《类代码编写基础》,今天着重学习一小段的内容:世界上最简单的 python 类。

这一小段的内容,我觉得很有助于了解python类的底层逻辑,所以值得拿一篇专门用来学习。

以下代码在idle中以命令行的方式运行:

>>> class rec:pass 

这个就是最简单的类,完全没有加任务属性及方法

>>> rec.name = 'Bob'
>>> rec.age = 40
>>>> print(rec.name)
Bob

可以完全在类语句之外,通过赋值变量名给这个类增加属性。上面这种使用方式甚至没有用到实例对象。换句话说,即使没有实例,类本身也是对象。事实上,类其实只是自包含的命名空间。

>>> x=rec()
>>> y=rec()
>>> x.name,y.name
('Bob', 'Bob')
>>> x.name = 'Sue'
>>> rec.name,x.name,y.name
('Bob', 'Sue', 'Bob')

上面这些代码表明,在类外部可以为类添加属性,并且效果等同于在内部定义,这跟其他语言(比如说java)不一样。

>>> def uppername(obj):
		return obj.name.upper()
>>> uppername(x)
'SUE'	
>>> rec.method = uppername   # 这一步就把我们定义的方法变成了类的方法
>>> x.method()    # 已经实例化的类仍然可以调用类的方法,说明对象与类还是有关联的 
'SUE'
>>> y.method()
'BOB'
>>> rec.method(x)    # 也可以直接调用类的方法
'SUE'

最后书上也有一句总结:

Python 中的OOP 其实就只是在已连接命名空间的对象内寻找属性而已。

你可能感兴趣的:(Python每日学,Python,Python基础,python)