【问题标题】:Python 3 self. attributes in methodPython 3 自我。方法中的属性
【发布时间】:2018-10-23 14:37:05
【问题描述】:

假设有一个带有属性和方法的简单类。

class c:

    def __init__(self, a, b):
        self.a = a
        self.b = b

    def f(self):
        return(self.a + self.b)

plus = c(2, 2)
print(c.f(plus))

print(c(2, 2).f())

如果我打印这个,首先创建一个对象,一切都会奏效。但是当我将属性传递给方法本身时,我得到了一个错误。

print(c.f(2, 2))

那么,是否可以像在普通函数中那样在不创建对象的情况下将属性传递给方法本身?我做错了什么,还是在这种情况下我应该使用普通函数而不是方法? 谢谢你们的帮助;)

【问题讨论】:

    标签: python class methods attributes self


    【解决方案1】:

    将课程视为模具。您实际上并不与模具本身进行交互,但您使用模具来创建对象,然后您可以与之交互。为了对对象做某事,你必须先创建它。这称为实例化。

    【讨论】:

    • 你不必实例化一个类来使用静态方法(这是这个用户正在寻找的),事实上,在 python 中,这是不受欢迎的。
    【解决方案2】:

    如果您想避免创建类的实例,可以使用@staticmethod 装饰器:

    class C:
    
        @staticmethod
        def f(a, b):
            return a + b
    
    >>> C.f(2, 2)
    4
    

    我还建议关注 PEP 8 Conventions 并使用 CapWords 来命名类。

    【讨论】:

      【解决方案3】:

      您可以使用staticmethod

      class c:
        def __init__(self, a, b):
          self.a = a
          self.b = b
        @staticmethod
        def f(*args):
          return sum(args)
      
      
      print(c.f(2, 2))
      

      输出:

      4
      

      【讨论】:

        猜你喜欢
        • 2017-03-13
        • 2020-08-03
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        • 2015-04-30
        • 2020-01-30
        • 2014-05-07
        • 1970-01-01
        相关资源
        最近更新 更多