Python3类方法输入;清洁溶液

我正在使用更多的基于类的程序,但是在某些情况下,将所有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多种方法时,我需要再次实现这些类型检查,包括即将出现的类型错误结果。

有人知道更好的方法吗?

linzichao 回答:Python3类方法输入;清洁溶液

最简单的解决方案是为您的类实现__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'
本文链接:https://www.f2er.com/3132831.html

大家都在问