사전 내부에서 IntEnum 클래스 호출
IntEnum 클래스 예제가 있습니다.
class ShapeMethod(IntEnum):
NONE = 0
circle = 1
square = 2
__init__
다른 클래스 의 함수에 의해 호출되어야합니다 .
class ExampleClass():
def __init__(look_at_shapes=None):
"""
Args:
look_at_shapes (dict): A dictionary of shape inputs.
"""
if look_at_shapes:
self.shape = ShapeMethod.NONE
if look_at_shapes["colour"]:
self.colour = look_at_shapes["colour"]
def do_something_with_shape:
if self.shape == ShapeMethod.circle:
print('awesome you got a circle'.)
elif self.shape == ShapeMethod.square:
print('squares have 4 sides.')
else:
print('nothing to see here.')
여기서 self.shape
속성은 circle
, square
또는 이어야 NONE
합니다.
이 do_something_with_shape
함수는 다음에 의해 호출됩니다.
input = {"colour" = blue}
my_object = ExampleClass(look_at_shape=input)
my_object.do_something_with_shape
의 구조는 input
사전이어야하며 colour
. 하지만 IntEnum
딕셔너리 내 에서 클래스 를 올바르게 사용하는 방법을 모르겠습니다 . 예를 들어 인쇄하려는 경우squares have 4 sides.
참고 : 모든 옵션을 ShapeMethod(IntEnum)
대문자로 표기해야합니까?
지금까지 내가 본 것 :
문서 파이썬은 많은 예제를 제공합니다; 그러나 내 경우에 맞는 것은 없습니다.
답변
사용하는 한 가지 방법은 다음과 같습니다.
from enum import IntEnum
class ShapeMethod(IntEnum):
NONE = 0
circle = 1
square = 2
class ExampleClass:
def __init__(self, look_at_shapes=None):
"""
Args:
look_at_shapes (dict): A dictionary of shape inputs.
"""
self.shape = None
self.colour = None
if look_at_shapes:
if look_at_shapes[ShapeMethod]:
self.shape = look_at_shapes[ShapeMethod]
if look_at_shapes["colour"]:
self.colour = look_at_shapes["colour"]
def do_something_with_shape(self):
if self.shape is ShapeMethod.NONE:
print('awesome you got a circle.')
elif self.shape is ShapeMethod.square:
print('squares have 4 sides.')
else:
print('nothing to see here.')
input_var = {
"colour": 'blue',
ShapeMethod: ShapeMethod.square
}
my_object = ExampleClass(look_at_shapes=input_var)
my_object.do_something_with_shape()
귀하의 부수 질문에 관하여 :
참고 : 모든 옵션을
ShapeMethod(IntEnum)
대문자로 표기해야합니까?
그것은 당신에게 달려 있습니다. 그것들은 모두 대문자 일 수 있으며, 상수이기 때문에 PEP 8과 일치합니다. 그러나 많은 사람들이 첫 글자 만 대문자로하기로 결정하고 올바른 스타일 선택입니다. 가장 일반적인 옵션은 모두 소문자를 사용하거나 다른 대문자를 혼합하는 것입니다.하지만 그렇게하는 것을 막을 수는 없습니다. 전체 참조는이 답변을 참조하십시오.
input = {
"shape": ShapeMethod.square,
"colour": "blue",
}
def __init__(look_at_shapes=None):
"""
Args:
look_at_shapes (dict): A dictionary of shape inputs.
"""
look_at_shapes = look_at_shapes or {}
self.shape = look_at_shapes.get("shape", ShapeMethod.NONE)
self.colour = look_at_shapes.get("colour") # None if "colour" doesn't exist
def do_something_with_shape:
if self.shape == ShapeMethod.circle:
print('awesome you got a circle'.)
elif self.shape == ShapeMethod.square:
print('squares have 4 sides.')
else:
print('nothing to see here.')
enum 클래스의 기본 문자열을 확인하려는 경우 self.shape.value
insead 를 확인해야합니다 self.shape
.
if self.shape.value == 'circle':
또는
if self.shape == ShapeMethod.circle