Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引用类成员的变量-Python_Python_Oop - Fatal编程技术网

引用类成员的变量-Python

引用类成员的变量-Python,python,oop,Python,Oop,我正在尝试创建一种方法,将前缀应用于一个项目,从而修改该项目的现有统计信息。例如,在下面的代码中,我试图将“巨大”前缀应用于“jar”项。我想让代码可以重用,这样我就可以有不同的前缀('fast','health')来修改不同的条目统计信息 是否可以在变量中保留类成员的名称? 如果是这样,有什么理由我不应该这样做吗 如果没有,还有什么替代方案 类前缀(对象): 定义初始值(自我、单词、状态、值): self.word=单词 self.stat=stat self.valu=valu 类别

我正在尝试创建一种方法,将前缀应用于一个项目,从而修改该项目的现有统计信息。例如,在下面的代码中,我试图将“巨大”前缀应用于“jar”项。我想让代码可以重用,这样我就可以有不同的前缀('fast','health')来修改不同的条目统计信息

  • 是否可以在变量中保留类成员的名称?
    • 如果是这样,有什么理由我不应该这样做吗
    • 如果没有,还有什么替代方案
类前缀(对象):
定义初始值(自我、单词、状态、值):
self.word=单词
self.stat=stat
self.valu=valu
类别项目(对象):
定义初始化(自身、名称、大小):
self.name=名称
self.size=大小
def apply_前缀(自身,前缀):
self.prefix.stat+=prefix.valu#您正在尝试动态引用某些属性。您可以使用
getattr
来实现这一点。如果你想设置属性,那么。。。这是
setattr
:)

至于这是否是最好的编码风格:这取决于。在某些情况下,使用
getattr
可以使代码更加清晰。因为现在您只有两个统计数据,所以需要这种动态属性引用似乎太过分了,因为我可以轻松做到:

bogus_prefix = Prefix('huge','bogus',3)
它是一个有效的
前缀
,但在我尝试应用它时抛出一个
AttributeError
。这不是最简单的调试方法

然而,
getattr
方法也有好处:如果你添加了更多的统计数据,你就不必在
前缀中更改一点代码(哈哈)

其他选择?Python中始终存在选项。:-)

我这样做的方法是使
前缀
只是一个单词:值对的
dict
。然后,
apply_prefix
将在单词键上循环,一次更新任意数量的值。这是一种类似的动态方法,但更具可扩展性。

您试图动态引用某些属性。您可以使用
getattr
来实现这一点。如果你想设置属性,那么。。。这是
setattr
:)

至于这是否是最好的编码风格:这取决于。在某些情况下,使用
getattr
可以使代码更加清晰。因为现在您只有两个统计数据,所以需要这种动态属性引用似乎太过分了,因为我可以轻松做到:

bogus_prefix = Prefix('huge','bogus',3)
它是一个有效的
前缀
,但在我尝试应用它时抛出一个
AttributeError
。这不是最简单的调试方法

然而,
getattr
方法也有好处:如果你添加了更多的统计数据,你就不必在
前缀中更改一点代码(哈哈)

其他选择?Python中始终存在选项。:-)


我这样做的方法是使
前缀
只是一个单词:值对的
dict
。然后,
apply_prefix
将在单词键上循环,一次更新任意数量的值。这是一种类似的动态方法,但更具可伸缩性。

你所说的
保留类成员的名称是什么意思?
?如果item类可以有大小或速度,我希望prefix class stat变量引用大小或速度。这将允许我使用一行代码,而不是一堆if语句。你所说的
保留类成员的名称是什么意思?
?如果项目类可以有大小或速度,我希望prefix class stat变量引用大小或速度。这将允许我使用一行代码,而不是一堆if语句。这将动态获取正确的值,但现在我如何动态地将其分配给
self.(前缀stat)
,以便
jar.size
将等于
15
?Edit:看起来我找到了答案,正如您所评论的那样。谢谢这将动态获取正确的值,但现在我如何动态地将其分配给
self.(前缀stat)
,以便
jar.size
将等于
15
?编辑:看起来我找到了答案,正如您所评论的那样。谢谢