本文整理汇总了Python中krpc.attributes.Attributes.get_class_member_name方法的典型用法代码示例。如果您正苦于以下问题:Python Attributes.get_class_member_name方法的具体用法?Python Attributes.get_class_member_name怎么用?Python Attributes.get_class_member_name使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类krpc.attributes.Attributes
的用法示例。
在下文中一共展示了Attributes.get_class_member_name方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from krpc.attributes import Attributes [as 别名]
# 或者: from krpc.attributes.Attributes import get_class_member_name [as 别名]
def __init__(self, service_name, name, procedures, documentation, sort):
super(Class, self).__init__()
self.service_name = service_name
self.name = name
self.fullname = service_name+'.'+name
self.documentation = documentation
self.cref = 'T:%s.%s' % (service_name, name)
members = []
properties = defaultdict(dict)
for pname, pinfo in procedures.iteritems():
if 'id' in pinfo:
del pinfo['id']
if Attributes.is_a_class_method(pname):
members.append(ClassMethod(service_name, name, pname, **pinfo))
elif Attributes.is_a_class_static_method(pname):
members.append(ClassStaticMethod(
service_name, name, pname, **pinfo))
elif Attributes.is_a_class_property_accessor(pname):
propname = Attributes.get_class_member_name(pname)
proc = Procedure(service_name, pname, **pinfo)
if Attributes.is_a_class_property_getter(pname):
properties[propname]['getter'] = proc
else:
properties[propname]['setter'] = proc
for propname, prop in properties.iteritems():
members.append(ClassProperty(service_name, name, propname, **prop))
self.members = OrderedDict((member.name, member)
for member in sorted(members, key=sort))
示例2: test_get_class_member_name
# 需要导入模块: from krpc.attributes import Attributes [as 别名]
# 或者: from krpc.attributes.Attributes import get_class_member_name [as 别名]
def test_get_class_member_name(self):
self.assertRaises(ValueError,
Attributes.get_class_member_name, 'ProcedureName')
self.assertRaises(ValueError,
Attributes.get_class_member_name, 'get_PropertyName')
self.assertRaises(ValueError,
Attributes.get_class_member_name, 'set_PropertyName')
self.assertEqual('MethodName',
Attributes.get_class_member_name(
'ClassName_MethodName'))
self.assertEqual('StaticMethodName',
Attributes.get_class_member_name(
'ClassName_StaticMethodName'))
self.assertEqual('PropertyName',
Attributes.get_class_member_name(
'ClassName_get_PropertyName'))
self.assertEqual('PropertyName',
Attributes.get_class_member_name(
'ClassName_set_PropertyName'))
示例3: generate_context
# 需要导入模块: from krpc.attributes import Attributes [as 别名]
# 或者: from krpc.attributes.Attributes import get_class_member_name [as 别名]
def generate_context(self):
context = {
'service_name': self._service,
'service_id': self._defs['id'],
'procedures': {},
'properties': {},
'classes': {},
'enumerations': {},
'exceptions': {}
}
for name, cls in self._get_defs('classes'):
context['classes'][name] = {
'methods': {},
'static_methods': {},
'properties': {},
'documentation': self.parse_documentation(
cls['documentation'])
}
for name, enumeration in self._get_defs('enumerations'):
context['enumerations'][name] = {
'values': [{
'name': self.parse_name(x['name']),
'value': x['value'],
'documentation': self.parse_documentation(
x['documentation'])
} for x in enumeration['values']],
'documentation': self.parse_documentation(
enumeration['documentation'])
}
for name, exception in self._get_defs('exceptions'):
context['exceptions'][name] = {
'documentation': self.parse_documentation(
exception['documentation'])
}
for name, procedure in self._get_defs('procedures'):
if Attributes.is_a_procedure(name):
context['procedures'][self.parse_name(name)] = {
'procedure': procedure,
'remote_name': name,
'remote_id': procedure['id'],
'parameters': self.generate_context_parameters(
procedure),
'return_type': self.parse_return_type(
self.get_return_type(procedure)),
'documentation': self.parse_documentation(
procedure['documentation'])
}
elif Attributes.is_a_property_getter(name):
property_name = self.parse_name(
Attributes.get_property_name(name))
if property_name not in context['properties']:
context['properties'][property_name] = {
'type': self.parse_return_type(
self.get_return_type(procedure)),
'getter': None,
'setter': None,
'documentation': self.parse_documentation(
procedure['documentation'])
}
context['properties'][property_name]['getter'] = {
'procedure': procedure,
'remote_name': name,
'remote_id': procedure['id']
}
elif Attributes.is_a_property_setter(name):
property_name = self.parse_name(
Attributes.get_property_name(name))
params = self.generate_context_parameters(procedure)
if property_name not in context['properties']:
context['properties'][property_name] = {
'type': params[0]['type'],
'getter': None,
'setter': None,
'documentation': self.parse_documentation(
procedure['documentation'])
}
context['properties'][property_name]['setter'] = {
'procedure': procedure,
'remote_name': name,
'remote_id': procedure['id']
}
elif Attributes.is_a_class_method(name):
class_name = Attributes.get_class_name(name)
method_name = self.parse_name(
Attributes.get_class_member_name(name))
params = self.generate_context_parameters(procedure)
context['classes'][class_name]['methods'][method_name] = {
'procedure': procedure,
'remote_name': name,
'remote_id': procedure['id'],
'parameters': params[1:],
'return_type': self.parse_return_type(
self.get_return_type(procedure)),
#.........这里部分代码省略.........
示例4: create_service
# 需要导入模块: from krpc.attributes import Attributes [as 别名]
# 或者: from krpc.attributes.Attributes import get_class_member_name [as 别名]
def create_service(client, service):
""" Create a new service type """
cls = type(
str(service.name),
(ServiceBase,),
{
'_client': client,
'_name': service.name,
'__doc__': _parse_documentation(service.documentation)
}
)
# Add class types to service
for cls2 in service.classes:
cls._add_service_class(cls2)
# Add enumeration types to service
for enumeration in service.enumerations:
cls._add_service_enumeration(enumeration)
# Add exception types to service
for exception in service.exceptions:
cls._add_service_exception(exception)
# Add procedures
for procedure in service.procedures:
if Attributes.is_a_procedure(procedure.name):
cls._add_service_procedure(procedure)
# Add properties
properties = defaultdict(lambda: [None, None])
for procedure in service.procedures:
if Attributes.is_a_property_accessor(procedure.name):
name = Attributes.get_property_name(procedure.name)
if Attributes.is_a_property_getter(procedure.name):
properties[name][0] = procedure
else:
properties[name][1] = procedure
for name, procedures in properties.items():
cls._add_service_property(name, procedures[0], procedures[1])
# Add class methods
for procedure in service.procedures:
if Attributes.is_a_class_method(procedure.name):
class_name = Attributes.get_class_name(procedure.name)
method_name = Attributes.get_class_member_name(procedure.name)
cls._add_service_class_method(class_name, method_name, procedure)
# Add static class methods
for procedure in service.procedures:
if Attributes.is_a_class_static_method(procedure.name):
class_name = Attributes.get_class_name(procedure.name)
method_name = Attributes.get_class_member_name(procedure.name)
cls._add_service_class_static_method(
class_name, method_name, procedure)
# Add class properties
properties = defaultdict(lambda: [None, None])
for procedure in service.procedures:
if Attributes.is_a_class_property_accessor(procedure.name):
class_name = Attributes.get_class_name(procedure.name)
property_name = Attributes.get_class_member_name(procedure.name)
key = (class_name, property_name)
if Attributes.is_a_class_property_getter(procedure.name):
properties[key][0] = procedure
else:
properties[key][1] = procedure
for (class_name, property_name), procedures in properties.items():
cls._add_service_class_property(
class_name, property_name, procedures[0], procedures[1])
return cls()