Я начал изучать язык программирования с помощью C ++, а затем с Java, а затем с Python, и поэтому этот вопрос слишком беспокоил меня, пока я не понял простое использование каждого из них.
Метод класса: Python в отличие от Java и C ++ не имеет перегрузки конструктора. Итак, чтобы достичь этого, вы можете использовать classmethod
. следующий пример объяснит это
. Рассмотрим, что у нас есть класс Person
, который принимает два аргумента first_name
и last_name
и создает экземпляр Person.
class Person(object):
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
Теперь, если требование возникает, когда вам нужно создать класс, используя только одно имя, просто first_name
. вы не можете сделать что-то подобное в python.
Это приведет к ошибке при попытке создать объект (экземпляр).
class Person(object):
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def __init__(self, first_name):
self.first_name = first_name
Однако вы можете добиться того же, используя @classmethod
, как указано ниже
class Person(object):
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
@classmethod
def get_person(cls, first_name):
return cls(first_name, "")
Статический метод :: Это довольно просто, он не связан с экземпляром или классом, и вы можете просто вызвать это, используя имя класса.
Итак, скажем, в приведенном выше примере вам нужна проверка того, что first_name
не должно превышать 20 символов, вы можете просто сделать это.
@staticmethod
def validate_name(name):
return len(name) <= 20
, и вы можете просто вызвать с помощью Class Name
Person.validate_name("Gaurang Shah")
Вам нужно будет преобразовать имя пользователя \nароль как PSCredential и передать его в Start-Process
. Вот пример фрагмента powershell (вы можете сделать это менее подробным, вставив переменные, если хотите) .
$password= convertto-securestring $passwordTextBox.Text -asplaintext –force
$credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $userTextBox.Text,$password
$script = "c:\temp\Scripts\MapCopyTuner.bat"
Start-Process powershell -Credential $credential -ArgumentList "-noprofile -command &{Start-Process $script -verb runas}"