我有一个对象(Person),它有多个子对象(Pet,Residence)作为属性。我希望能够像这样动态设置这些子对象的属性:classPerson(object):def__init__(self):self.pet=Pet()self.residence=Residence()classPet(object):def__init__(self,name='Fido',species='Dog'):self.name=nameself.species=speciesclassResidence(object):def__init__(self,type='House',sqft=No
我有一个对象(Person),它有多个子对象(Pet,Residence)作为属性。我希望能够像这样动态设置这些子对象的属性:classPerson(object):def__init__(self):self.pet=Pet()self.residence=Residence()classPet(object):def__init__(self,name='Fido',species='Dog'):self.name=nameself.species=speciesclassResidence(object):def__init__(self,type='House',sqft=No
我想通过getattr函数添加参数来调用一些未知函数。有可能吗? 最佳答案 是的,但你没有将它们传递给getattr();一旦你引用了这个函数,你就可以正常调用它。getattr(obj,'func')('foo','bar',42) 关于python-如何在python中使用附加参数启动getattr函数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6321940/
我想通过getattr函数添加参数来调用一些未知函数。有可能吗? 最佳答案 是的,但你没有将它们传递给getattr();一旦你引用了这个函数,你就可以正常调用它。getattr(obj,'func')('foo','bar',42) 关于python-如何在python中使用附加参数启动getattr函数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6321940/
classA():passa=A()b=A()a.b=bb.c=1a.b#thisisbgetattr(a,"b")#soisthisa.b.c#thisis1getattr(a,"b.c")#thisraisesanAttributeError对我来说,假设后者似乎很自然。我确信这是有充分理由的。它是什么? 最佳答案 您不能在getattr函数中添加句点,因为getattr就像访问对象的字典查找一样(但由于子类化和其他Python实现细节,比这更复杂一些)。如果您在a上使用'dir'函数,您将看到对应于对象属性的字典键。在这种
classA():passa=A()b=A()a.b=bb.c=1a.b#thisisbgetattr(a,"b")#soisthisa.b.c#thisis1getattr(a,"b.c")#thisraisesanAttributeError对我来说,假设后者似乎很自然。我确信这是有充分理由的。它是什么? 最佳答案 您不能在getattr函数中添加句点,因为getattr就像访问对象的字典查找一样(但由于子类化和其他Python实现细节,比这更复杂一些)。如果您在a上使用'dir'函数,您将看到对应于对象属性的字典键。在这种
我的类(class)有一个字典,例如:classMyClass(object):def__init__(self):self.data={'a':'v1','b':'v2'}那我想用dict的key和MyClass实例来访问dict,例如:ob=MyClass()v=ob.a#HereIexpectob.areturns'v1'我知道这应该由__getattr__实现,但我是Python新手,我不完全知道如何实现它。 最佳答案 classMyClass(object):def__init__(self):self.data={'a'
我的类(class)有一个字典,例如:classMyClass(object):def__init__(self):self.data={'a':'v1','b':'v2'}那我想用dict的key和MyClass实例来访问dict,例如:ob=MyClass()v=ob.a#HereIexpectob.areturns'v1'我知道这应该由__getattr__实现,但我是Python新手,我不完全知道如何实现它。 最佳答案 classMyClass(object):def__init__(self):self.data={'a'
在Python中,最简洁的说法是:“如果存在dict['foo'],请给我,如果不存在,请给我这个其他值bar”?如果我使用的是对象而不是字典,我会使用getattr:getattr(obj,'foo',bar)但是如果我尝试使用字典来代替,这会引发一个关键错误(我发现不幸的区别来自JavaScript/CoffeeScript)。同样,在JavaScript/CoffeeScript中我只写dict['foo']||bar但是,这又会产生KeyError。该怎么办?请简洁! 最佳答案 dict.get(key,default)如果
如果Ruby受邀参加派对并带来:foobarobject.send('foomethod')..Python被邀请参加同一个聚会并带来:getattr(foobarobject,'foomethod')()..PHP必须为聚会带来什么?红利问题:如果Ruby和Python嫉妒PHP的派对恩惠,他们会在PHP的文档中搜索哪些英文术语以便在PHP背后谈论它? 最佳答案 PHP带来了这个:$foobarobject->{"foomethod"}();...还有可乐和薯条。编辑:虽然上面的术语是variablevariables手册中没有专