[我正在教授面向对象编程的Python类,并且在我学习如何解释类时,我看到了一个空的类定义:
class Employee:
pass
然后该示例继续为此类的对象定义名称和其他属性:
john = Employee()
john.full_name = "john doe"
有趣!
我想知道是否有一种方法可以为这样的类的实例动态定义一个函数?类似于:
john.greet() = print 'Hello, World!'
这在我的Python解释器中不起作用,但是还有另一种方法吗?
一个类或多或少是对象属性dict
的精美包装。当实例化一个类时,您可以为其分配属性,这些属性将存储在foo.__dict__
中;同样,您可以在foo.__dict__
中查找您已经编写的任何属性。
这意味着您可以执行一些巧妙的动态操作,例如:
尝试使用lambda
:
您可以使用AttrDict
您还可以使用collection
标准模块中的“命名元组”。命名元组的工作方式类似于“普通”元组,但是元素具有名称,您可以使用“点语法”访问元素。从collection docs: