【问题标题】:Python3 Class method inputs; clean solutionPython3 类方法输入;清洁溶液
【发布时间】:2020-03-05 20:25:55
【问题描述】:

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

有人知道更好的方法吗?

【问题讨论】:

    标签: python python-3.x class methods types


    【解决方案1】:

    最简单的解决方案是为您的类实现一个__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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      相关资源
      最近更新 更多