草庐IT

python - 为什么我不能将 __getattr__ 与 Django 模型一起使用?

我在网上看到有人将__getattr__与Django模型一起使用的示例,但每当我尝试时都会出错。(Django1.2.3)我在普通对象上使用__getattr__时没有任何问题。例如:classPost(object):def__getattr__(self,name):return42工作得很好......>>>fromblog.modelsimportPost>>>p=Post()>>>p.random42现在,当我尝试使用Django模型时:fromdjango.dbimportmodelsclassPost(models.Model):def__getattr__(self,

php - 比较 PHP 的 __get() 与 Python 中的 __get__() 和 __getattr__()

__get__()有什么区别和__getattr__()在Python中?我来自PHP背景,那里只有__get().我应该什么时候使用哪个功能?我一直试图弄清楚这一点。我看到很多问题,例如thisone,询问__getattr__()的区别和__getattribute__(),尽管。 最佳答案 您将找到所有这些方法的详细文档here.来自PHP,您应该首先熟悉Python对象模型。它比PHP丰富得多,因此您不应该尝试将您的PHP知识1:1映射到Python。如果你想开发PHP,就使用PHP。如果您想使用Python进行开发,请学习

python - 参数如何通过 __getattr__ 传递给函数

考虑以下代码示例(python2.7):classParent:def__init__(self,child):self.child=childdef__getattr__(self,attr):print("Calling__getattr__:"+attr)ifhasattr(self.child,attr):returngetattr(self.child,attr)else:raiseAttributeError(attr)classChild:defmake_statement(self,age=10):print("IamaninstanceofChildwithage"+

python - 为什么 setattr 和 getattr 允许空格?

假设我定义了这个类:classA:passa=A()现在显然我可以像这样设置属性:a.x=5但是使用setattr,我可以给a属性,它们的名称中包含空格。setattr(a,'whitespace',1)setattr(a,'new\nline',None)dir(a)包含'whitespace'和'new\nline'。我无法使用.运算符访问这些属性,因为它会引发SyntaxError:>>>a.whitespaceFile"",line1a.whitespace^SyntaxError:invalidsyntax>>>a.new\nlineFile"",line1a.new\nli

python - dir() 与 __getattr__ 执行什么样的 python 魔术?

以下是python2.7和MySQLdb1.2.3。我需要一个类包装器来为不支持它的对象添加一些属性(带有__slots__的类和/或一些用C编写的类)所以我想出了这样的东西:classWrapper(object):def__init__(self,obj):self._wrapped_obj=objdef__getattr__(self,obj):returngetattr(self._wrapped_obj,attr)我期望在我的Wrapper实例上调用的dir()内置函数应该只返回对象继承的名称加上wrapped_obj,我发现这实际上是大多数情况的情况,但并非所有情况都是如此

c# - 在 C# 中有类似 Python 的 getattr() 的东西吗?

有没有类似Python'sgetattr()的东西在C#中?我想通过读取一个列表来创建一个窗口,该列表包含要放在窗口上的控件的名称。 最佳答案 还有Type.InvokeMember.publicstaticclassReflectionExt{publicstaticobjectGetAttr(thisobjectobj,stringname){Typetype=obj.GetType();BindingFlagsflags=BindingFlags.Instance|BindingFlags.Public|BindingFlag

python - Golang 相当于 pythons __getattr__() 或 __call__()

这个问题在这里已经有了答案:CreateastructbyreflectioninGo(1个回答)Isitpossibletodynamicallycreateafunctionwithareceiver(method)ingo?(1个回答)CanIcreateanewfunctionusingreflectioninGo?(4个答案)关闭5个月前。我想在运行时操作结构。例如,我有一个结构:typeItemstruct{SomeFieldstring}是否可以在运行时添加字段?或尚未定义的访问属性。像pythons__getattr__()或__call__()这样我可以动态控制访问的

go - FUSE - 避免在 GetAttr 中计算大小

我正在为远程服务实现FUSE文件系统。当用户打开文件时,我会进行网络调用以获取文件的内容。Itappears必须通过GetAttr报告文件大小才能打开。为了知道文件的大小,我必须发出网络调用,并且由于在执行ls时会为每个条目调用GetAttr,所以我很担心这种设计(如果用户在包含许多项目的目录中执行ls,它将必须获取所有文件,即使用户不想打开其中任何一个。我该如何解决这个问题?我的想法是:使用不依赖于报告大小的较低级别的读取方法?我认为使用Read而不是Open会有所帮助,但是如果没有大小我就无法让它工作。如果我可以区分源自Open的GetAttr调用与其他调用(包括ls),我可以仅在

python - “ super ”对象不调用 __getattr__

我将一个对象包裹在另一个对象中。“Wrapper”通过覆盖__getattr__来访问“Wrapped”对象的属性。这很好用,直到我需要覆盖子类的属性,然后使用super()从基类访问属性。我仍然可以直接从__getattr__访问该属性,但是为什么super()不起作用?classWrapped(object):def__init__(self,value):self.value=valuedefhello_world(self):print'helloworld',self.valueclassWrapper(object):def__init__(self,obj):self.w

python - 为什么使用 setattr() 和 getattr() 内置函数?

通过阅读文档,我完全理解了getattr()和setattr()做。但它也明确表示getattr(x,'foobar')等价于x.foobar和setattr(x,'foobar',123)等价于x.foobar=123。那我为什么要使用它们呢? 最佳答案 因为你也可以使用动态变量:somevar='foo'getattr(x,somevar)使用常规属性访问语法无法做到这一点。注意getattr()也有一个可选的默认值,如果属性缺失会返回:>>>x=object()>>>getattr(x,'foo')Traceback(most