Входные данные метода класса Python3;чистый раствор - PullRequest
0 голосов
/ 09 ноября 2019

Я использую больше программ, основанных на классах, но в некоторых случаях не удобно предоставлять все self.paramets в класс. В этих случаях я хочу использовать обычный вход в функцию в классе. Я выяснил способ достижения обоих входов, позвольте мне показать это в следующем сценарии:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(a):
    if (type(a) == str):
        name = a
    else:
        name = a.name
    print("Hello my name is " + name)

p1 = Person("John", 36)
p1.myfunc()
print("---------------------")
Person.myfunc("Harry")

Вывод:

Hello my name is John
---------------------
Hello my name is Harry

Во-первых, имя инициализируется классами self.params,Во-вторых, имя предоставляется в методе внутри класса в виде строки. Поэтому проверка типа необходима.

Однако я не думаю, что это чистый подход, потому что, когда у меня есть> 30 методов, мне нужно снова реализовать эти проверки типов, включая предстоящие результаты с ошибками типов.

Кто-нибудь знает лучший подход?

1 Ответ

1 голос
/ 09 ноября 2019

Самое простое решение - реализовать метод __str__ для вашего класса. Этот метод будет вызываться всякий раз, когда что-то пытается преобразовать экземпляр класса в строку.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return self.name

p = Person('Jane', 25)

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