python - 可以为不同的类变量调用相同的方法吗
问题描述
我正在尝试为代码中显示的不同变量调用相同的方法。在示例中,我试图通过发送变量的名称来获取值的双倍。
我尝试了不同的方法,但似乎都没有奏效:
Class Number:
def __init__(self, a, b):
self.num = a
self.float = b
def teste(self, val):
print(2*self.val)
l=Number(3,9)
l.teste(a)
l.teste(b)
我希望输出为 6 和 18
解决方案
代码有几个问题
- 是
class
,不是Class
- 定义为实例变量,而不是类
num
变量float
- 最后三行不是类定义的一部分,因此它们需要不缩进
float
是属性名称的糟糕选择(即它暗示类型是浮点数,但这不是强制的)val
不是类的属性,而是teste()
方法的参数。self.
因此,您在引用它时不需要。
虽然我不确定目的是什么,但你可以实现你想要的
class Number:
def __init__(self, a, b):
self.num = a
self.float = b
def teste(self, val):
print(2 * getattr(self, val))
def testb(self, val):
print(2 * val)
foo = Number(3, 9)
foo.teste('num')
foo.teste('float')
foo.testb(foo.num)
foo.testb(foo.float)
# but you can do also for any number
foo.testb(10)
teste()
注意和之间的区别testb()
推荐阅读
- java - Springboot liquibase 回滚锁定失败
- css - Angular:如何更改里面的图标
? - powerbi - MS Power BI 中 2 列之间的天数差异
- python - 如何在ORM查询中使用路径编写mysql json_contains函数的第一个参数
- nlp - 如何改进我的 spaCy 模型以完美识别坐标?
- javascript - JavaScript 中的自定义事件与简单地调用常规函数有何不同?
- python - 如何将合并的文本文件保存到python中的子目录中?
- android - 在多窗口中将焦点更改为第二个应用程序
- javascript - Symfony 4 和 MercureBundle
- mysql - 如何在 mysql 8.0.16 中声明变量?