Ram*_*amy 48 python oop empty-class
我正在教一个关于面向对象编程的python类,当我正在研究如何解释类时,我看到了一个空的类定义:
class Employee:
pass
Run Code Online (Sandbox Code Playgroud)
然后,该示例继续为此类的对象定义名称和其他属性:
john = Employee()
john.full_name = "john doe"
Run Code Online (Sandbox Code Playgroud)
有趣!
我想知道是否有一种方法可以为这样的类的实例动态定义函数?就像是:
john.greet() = print 'hello world!'
Run Code Online (Sandbox Code Playgroud)
这在我的python解释器中不起作用但是有另一种方法吗?
Kat*_*iel 36
dict
对于对象的属性,类或多或少是一个花哨的包装器.实例化一个类时,可以为其分配属性,这些属性将存储在foo.__dict__
; 同样,您可以查找foo.__dict__
已编写的任何属性.
这意味着你可以做一些动态的东西,比如:
class Employee: pass
def foo(self): pass
Employee.foo = foo
Run Code Online (Sandbox Code Playgroud)
以及分配给特定实例.(编辑:添加self
参数)
Kir*_*rov 16
试试lambda
:
john.greet = lambda : print( 'hello world!' )
Run Code Online (Sandbox Code Playgroud)
你能做到的:
john.greet()
Run Code Online (Sandbox Code Playgroud)
编辑:感谢托马斯K的笔记 - 这适用于Python 3.2
Python2,而不是Python2,print
似乎是statement
.但这对lambda
s而言是有效的,没有陈述(对吧?对不起,我只知道python3.2
(:)
归档时间: |
|
查看次数: |
52117 次 |
最近记录: |