이 야구장에 라인에 대한 온라인 번역 만있는 것이 아닙니다. 동물의 종류 (부수적으로, 품종이 아님, 부수적으로)를 모으고 동물의 유형에 따라 다른 행동을하는 일련의 관련 수업을 들려주는 것 같아요.).
파이썬에서는 이것을 자연스럽게하는 방법은 메타 프로그래밍을 통해 이루어집니다. 인수를 템플릿에 전달하여 각 클래스를 반환하는 클래스 또는 팩토리 함수를 만듭니다. 함수와 클래스는 파이썬에서 1 차 객체이므로 다른 객체와 마찬가지로 전달 될 수 있습니다. 클래스 자체는 객체이기 때문에 setattr
(및 해당 사촌 : hasattr
및 getattr
)을 사용하여 속성에 액세스 할 수 있습니다.
다음은 간단한 예제 :
#!/usr/bin/env python
def Animal(species, sound):
class meta: pass
def makeSound(meta, sound=sound):
print sound
setattr(meta, makeSound.__name__, makeSound)
def name(meta, myname=species):
return myname
setattr(meta, 'name', name)
return meta
if __name__ == '__main__':
animal_sounds = (('Dog', 'woof'),
('Cat', 'meow'),
('Cow', 'moo'),
('Chicken', 'cluck'),
('Elephant', 'eraunngh'))
menagerie = dict()
for animal, sound in animal_sounds:
menagerie[animal] = Animal(animal, sound)
for Beast in menagerie:
beast = Beast()
print beast.name(), ' says ',
beast.makeSound()
Dog = menagerie['Dog']
fido = Dog() # equivalent to fido = menagerie['Dog']()
fido.makeSound()
# prints "woof"
Cat = menagerie['Cat']
felix = Cat()
felix.makeSound()
Mouse = Animal('Mouse', 'squeak')
mickey = Mouse()
mouse.makeSound()
# prints "squeak"
이것은 진부한 예처럼 보인다하지만 난 그것을 통해 포인트를 얻을 수 있기를 바랍니다. 테이블 (이 경우 터플의 튜플)을 생성 할 수 있습니다.이 튜플은 다양한 클래스의 매개 변수/동작을 채우는 데 사용될 인수를 제공합니다. Animal에 의해 리턴 된 클래스는 다른 파이썬 클래스와 같습니다. 나는 여기 예제에서 그것을 보여 주려고 노력했다.
에 동의 함! 알고리즘을 이해 한 다음이를 다른 언어로 변환/구현하는 것이 줄 단위로 번역하는 것보다 낫습니다. – ariefbayu