- aliasing
'''
##################
'''
#
# class Animal:
# def __init__(self, favourite_food):
# self.favourite_food = favourite_food
#
#
# class Zoo:
# def new_animal(self, favourite_food):
# return Animal(favourite_food)
#
# def feed(self, food, animal):
# print("Im giving {} to {}.".format(food, animal))
#
# def get_favourite_food(self, animal):
# return animal.favourite_food
#
#
# z1 = Zoo()
# animal = z1.new_animal('beef')
# food = z1.get_favourite_food(animal)
# z1.feed(food, animal)
'''
Previously, to use these keywords in Robot Framework, you would have to do
this:
${animal}= New animal beef
${food}= Get favourite food
Feed ${food} ${animal}
After the aforementioned modifications, these keywords can be used in the
following way:
New animal beef Lion
${food}= Get favourite food Lion
Feed ${food} Lion
'''
'''
##################
'''
# from taf.internal.aliasing import aliasing_scope
from aliasing import aliasing_scope
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s:%(message)s')
logger = logging.getLogger(__name__)
class Animal:
def __init__(self, favourite_food):
self.favourite_food = favourite_food
class Man:
def __init__(self, favourite_food):
self.favourite_food = favourite_food
class Zoo:
# lookup_handler, store = aliasing_scope()
lookup_handler, store = aliasing_scope('animal', Animal, 'test_aliasing_scope')
# lookup_handler, store = aliasing_scope('animal', Animal)
# lookup_handler_man, store_man = aliasing_scope('man', Man, 'test2')
print('lookup_handler: ', lookup_handler.__dict__)
print('store : ', store.__dict__)
def new_animal(self, favourite_food, name=None):
new_animal = Animal(favourite_food)
self.store.add(new_animal, name)
print('def new_animal: ',self.store.__dict__)
return new_animal
# def new_man(self, favourite_food, name=None):
# new_man = Man(favourite_food)
# self.store_man.add(new_man, name)
# print('def new_man: ',self.store.__dict__)
# return new_man
@lookup_handler.implicit_lookup('animal')
def feed(self, food, animal):
print("Im giving {} to {}.".format(food, animal))
# @lookup_handler_man.implicit_lookup
# def eat(self, food, man):
# print("{} is eating {} .".format(man, food))
# @lookup_handler.implicit_lookup('animal') # 前面lookup_handler, store = aliasing_scope(),这里需要指定 animal
# @lookup_handler.implicit_lookup('animal222') # 默认就这样用
@lookup_handler.implicit_lookup('animal222')
def get_favourite_food(self, animal222):
return animal222.favourite_food
z1 = Zoo()
# animal
# Lion = z1.new_animal('beef') # 主要是替换这种用法,Lion不用对象,可以用字符串
# z1.new_animal('beef', 'Lion')
# food = z1.get_favourite_food('Lion')
# z1.feed(food, 'Lion')
# 原始用法
# print('@@')
# Lion2 = z1.new_animal('beef')
# food2 = z1.get_favourite_food(Lion2)
# z1.feed(food2,Lion2)
# print('@@')
# default
# z1.new_animal('food')
# food = z1.get_favourite_food('amize_default')
# z1.feed(food,'amize_default')
# man
# z1.new_man('rice', 'Jhon')
# z1.eat('rice', 'Jhon')