Конечно
write-host ($obj | Select -ExpandProperty "SomeProp")
Или, если это важно:
$obj."SomeProp"
Чтобы проиллюстрировать ответ Шлема с помощью питонического решения:
class Game:
VALUES = list(range(1, 10))
COLORS = ["Red", "Blue", "Yellow", "Green"]
@classmethod
def create_draw_stack(cls):
return [Card(value, color) for value in cls.VALUES for color in cls.COLORS]
def __init__(self, players_count=2, cards_count=7):
self.draw_stack = self.create_draw_stack()
self.play_stack = [self.draw_stack.pop()]
Также вы спросили:
Существует ли эмпирическое правило для интуитивного понимания таких вопросов?
blockquote>«Интуитивно» часть - это, главным образом, вопрос опыта («опыт» - это не то же самое, что «время, потраченное на что-то» - это также подразумевает чтение, эксперименты, мышление и т. Д.). [ 1111]
wrt / «правило большого пальца»:
- высокая сплоченность: одна «единица» - будь то модуль, класс, метод или функция - должна состоять из одного и только из одного (иногда эта «одна вещь» может быть довольно широкой, но в любом случае)
- локальность: вещи, которые работают вместе, должны храниться вместе (поэтому вам не нужно открывать дюжину файлов в вашем редакторе, чтобы узнать, как все это работает работа)
- слабая связь: один «блок» должен напрямую зависеть от как можно меньшего числа других блоков
- читаемость: код должен быть как можно более очевидным и читаемым (хорошо, некоторые субъективные части здесь )
- тестируемость: код должен легко тестироваться изолированно (ср. «Слабая связь»)
- простота: код должен быть как можно более простым в зависимости от сложности задачи.
- удобство использования: ваш «модульный» API должен быть максимально простым в использовании для клиентского кода