Используя свойство объекта как значение по умолчанию для свойства метода

json ограничено в терминах объектов, которые он может печатать, а jsonpickle (возможно, вам нужен pip install jsonpickle) ограничен в терминах, он не может отступать от текста. Если вы хотите проверить содержимое объекта, класс которого вы не можете изменить, я все равно не мог найти более строгий путь:

 import json
 import jsonpickle
 ...
 print  json.dumps(json.loads(jsonpickle.encode(object)), indent=2)

Обратите внимание, что они все еще не могут распечатать объект методы.

26
задан Rahul 4 June 2019 в 09:27
поделиться

4 ответа

Это не намного лучше:

public function createShipment($startZip, $endZip, $weight=null){
    $weight = !$weight ? $this->getDefaultWeight() : $weight;
}

// or...

public function createShipment($startZip, $endZip, $weight=null){
    if ( !$weight )
        $weight = $this->getDefaultWeight();
}
13
ответ дан Kevin 28 November 2019 в 17:21
поделиться

Аккуратный прием с булевой операцией ИЛИ:

public function createShipment($startZip, $endZip, $weight = 0){
    $weight or $weight = $this->getDefaultWeight();
    ...
}
6
ответ дан Michał Rudnicki 28 November 2019 в 17:21
поделиться

Это позволит вам пройти вес 0 и по-прежнему работать должным образом. Обратите внимание на оператор ===, он проверяет, соответствует ли вес «null» как по значению, так и по типу (в отличие от ==, который является просто значением, поэтому 0 == null == false).

PHP:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}
1
ответ дан pix0r 28 November 2019 в 17:21
поделиться

Вы можете использовать статический член класса для хранения значения по умолчанию:

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight) {
        // your function
    }
}
1
ответ дан Toby Speight 28 November 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: