关于编程语言的一个问题

很早之前,我学过一款编程语言,它能够实现动态调用,例如.

class A{
  var attr1 = 10;
  var attr2 = 20;
  function test(attr){
    print(this.[attr]);
  }
}

上面仅是表达思想的伪代码,未必是那个语言的文法,有人知道哪种语言能实现上述功能吗

python可以直接把函数名赋值给变量,然后调用
C#、java、python都可以通过函数名字的字符串,利用“反射”实现动态调用
关键字:反射

java里面通过继承

反射机制像,但不是我印象中的答案,我印象中是直接往函数的参数里传入一个字符串之类的就能够动态调用了。。。而且我印象中也不是通过C#、java python实现的,有没有人了解过Kotlin,Kotlin能实现吗?还是说也得通过反射?