Как установить параметр типа класса по умолчанию, как ноль в Python? - PullRequest
0 голосов
/ 20 октября 2018

Я новичок в разработке на C # для изучения Python, и мне не очень понятен параметр типа класса в определении функции Python, особенно ноль по умолчанию.

в C # Я могу установить другой тип классав качестве параметра и установите его значение по умолчанию как нулевое в текущем определении функции класса, и используйте его функцию, если оно не равно нулю.такая вещь, как показано ниже

public class ClassA{
    public DoSthByA() {
      Console.WriteLine ("I am class A");
    }
    void DoSthWithB (ClassB b=null) {
      if (b != null) {
         b.DoSthByB ();
       }
    }
}
public class ClassB {
  public DoSthByB () {
    Console.WriteLine ("I am class B");
  }
}

, но если я попытаюсь сделать это в Python, как я определяю функцию

def test(self,ClassB=None):
   ClassB.DoSthByB()

, система предупредит, что это не тип, который не DoSthByBатрибут, я пытался найти это, но не нашел хорошего ответа, а также я не очень ясно, о параметре типа класса Python, который иногда больше похоже на утку.просто надеюсь, что кто-то может помочь мне в этом, большое спасибо ~

1 Ответ

0 голосов
/ 20 октября 2018

Я сделал обходной путь и теперь работаю, но не уверен, что это правильный путь в python

в тестовой функции, я сначала объявляю тип classB var class_b_ref, затем зависит от параметра функции Noneили не передавать реальную ссылку на объектную ссылку на class_b_ref ​​

#version 1
def func_in_classA1(self,class_b_parameter=None):
    class_b_ref=ClassB
    if class_b_parameter== None:
        print "the parameter is null"
        return
    else:
        class_b_ref= class_b_parameter

    class_b_ref.DoSthByB()

PS: версия 1 работает, но система упомянула меня, что "class_b_ref ​​= ClassB" не используется, так как в "else" назначено другое значение.Я думаю, что я все еще пытаюсь использовать «кастинговые» привычки из C #, но Python - это динамический язык, из приведенного выше кода я перешел на версию 2

# Version2:
def func_in_classA2(self,class_b_parameter=None):
    if class_b_parameter== None:
        print "the parameter is null"
        return
    elif isinstance(class_b_parameter,ClassB):
        pass

    class_b_ref.DoSthByB() 

, она работает, пожалуйста, сообщите мне, если будет лучше илиформальный способ сделать это в Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...