我正在尝试创建一个带有一些格式选项的类。但我不知道怎么做才好。。。你知道吗
代码产生以下错误:
AttributeError: 'NoneType' object has no attribute 'valuesonly'
class Testings(object):
def format_as_values_only(self,somedata):
buildstring=somedata.values()
return buildstring
def format_as_keys_only(self):
pass
def format_as_numbers(self):
pass
def get_data_method(self):
self.data= {'2_testkey':'2_testvalue',"2_testkey2":"2_testvalue2"}
@property
def valuesonly(self):
return format_as_values_only(self.data)
test=Testings()
print test.get_data_method().valuesonly
对我来说,重要的是能够得到格式化程序,比如:class.method.formatter类大概。。。你知道吗
谢谢你的任何提示!你知道吗
你不能这样做。方法只是直接在类块中定义的函数。你的函数在另一个函数中,所以它不是一个方法。
property
修饰符除了在类块中之外是无用的。你知道吗但是,更基本的是,函数定义只是创建局部名称,与变量赋值或其他任何操作相同。您的
valuesonly
函数根本无法从get_data_method
函数外部访问,因为除了返回值之外,函数内部的任何内容都无法访问。你所做的无异于:。然后期望能够从函数外部访问局部变量
a
。这行不通。调用get_data_method()
时,会得到值None
,因为get_data_method
不会返回任何内容。随后对get_data_method()
的结果所做的任何操作都只是对相同的None值进行操作。你知道吗如果要使用所描述的语法访问对象,则需要使
get_data_method
返回一个具有valuesonly
等属性的对象。换句话说,编写另一个提供valuesonly
属性的类,并让get_data_method
返回该类的实例。大致轮廓(未经测试):然而,你应该想想你为什么要这么做。将其设置为直接在
Testing
对象上调用valuesonly
,或者将标志传递给get_data_method
,执行类似于get_data_method(valuesonly=True)
的操作,可能会更简单。你知道吗get_data_method
没有返回值,因此test.get_data_method()
的结果是None
。这就是为什么你会有例外。你知道吗如果你真的想做类似
test.get_data_method().valuesonly
的事情,要么在Testings
上定义valuesonly
属性,让get_data_method
返回self
,要么让get_data_method
返回一些新的对象和你想要定义的属性。你知道吗相关问题 更多 >
编程相关推荐