Python 如何创建我可以使用的类;得到“;?
在Python中,我试图创建一个具有我可以“获取”的属性的类(很抱歉,如果这个措辞不完全正确)Python 如何创建我可以使用的类;得到“;?,python,class,attributes,Python,Class,Attributes,在Python中,我试图创建一个具有我可以“获取”的属性的类(很抱歉,如果这个措辞不完全正确) 基本上,我试图定义一些具有属性var1和var2的类p。因此,我可以使用p.get(“var1”)和p.get(“var2”)来获取这些各自属性的值。如何定义这样的内容?您可以使用get()方法定义一个类,并检查实例是否具有内置getattr()方法的属性,如下所示: class MyClass: def get(self, property, default=None): return
基本上,我试图定义一些具有属性
var1
和var2
的类p。因此,我可以使用p.get(“var1”)
和p.get(“var2”)
来获取这些各自属性的值。如何定义这样的内容?您可以使用get()
方法定义一个类,并检查实例是否具有内置getattr()
方法的属性,如下所示:
class MyClass:
def get(self, property, default=None):
return getattr(self, property, default)
var1 = 'var1'
var2 = 'var2'
myInstance = MyClass()
print(myInstance.get('var1'))
print(myInstance.get('var3', 'NonExisting Attribute'))
这是我刚刚创建的一个正在工作的repl.it项目:
您还可以使用
hasattr()方法检查实例是否具有属性:
class MyClass:
def get(self, property, default=None):
if hasattr(self, property):
return getattr(self, property)
else:
return default
# Or you can raise an exception here
例如对象
类测试:
定义初始化(自):
self.a=1
self.b=2
def get(自我,变量):
返回eval('self.%s'%var)
t=测试()
a=t.get('a')
打印(a)##输出:1
对于类对象
类测试:
a=1
b=2
@类方法
def get(cls,var):
返回eval('cls.%s'%var)
a=测试。获取('a')
打印(a)#输出:1
您可以使用dict
代替使用get()方法定义类
。做一个关于python类的教程,您会立即明白什么是属性和方法,以及如何使用方法返回属性。我认为还值得注意的是,您还可以使用hasattr()
检查命名属性是否存在。@martineau答案的第一个版本包括hasattr()
方法,但我是这样编辑的。我将更新它以包括这种方法。我认为现在它更好了(已经投票了)。@martineau感谢改进:)当然也感谢投票。