实例变量的类型

bdh*_*har 0 python class member

假设我有这样的课程

class Employee:
    pass
Run Code Online (Sandbox Code Playgroud)

我创建了两个对象,Employee如下所示

john = Employee()
rob = Employee()
Run Code Online (Sandbox Code Playgroud)

..并创建实例变量

john.age = 12
rob.age = '15'
Run Code Online (Sandbox Code Playgroud)

编译器同时接受并打印年龄(约翰的年龄int和抢劫年龄string).这怎么合乎逻辑?每个对象中具有不同类型的相同数据属性.

谢谢.

Eli*_*sky 7

一定要理解这个基本原则:在Python中,变量没有类型.有类型.这就是Python与Lisp和Javascript类似的动态类型语言的本质,但与C,C++和Java不同.

>>> foo = 5       # foo now holds a value of type int
>>> foo = 'hello' # foo now holds a value of type string
Run Code Online (Sandbox Code Playgroud)

以下是维基百科在Python中输入内容的摘录:

Python使用duck typing并且有类型的对象但是无类型的变量名.在编译时不检查类型约束; 相反,对象上的操作可能会失败,表示给定的对象不是合适的类型.尽管是动态类型的,但Python是强类型的,禁止未明确定义的操作(例如,向字符串添加数字),而不是默默地尝试理解它们.

如果你想学习Python,请阅读更多关于这个主题的内容(特别是Duck Typing是什么).


PS此问题与对象的属性完全正交.属性只是Python中的其他"变量",它们也可以保存值.这些值可以是不同类型.