何时使用自我,何时不使用自我

时间:2018-09-25 19:46:31

标签: python python-2.7 class

哪个类选项更可取,为什么?

选项1

class Person():
    def __init__(self):
        pass
    def sayHello(self, name):
        print "{} says hello!".format(name)
    def driver(self):
        for name in names:        # names is generated in the driver function by some means of input
            self.sayHello(name)

选项2

class Person():
    def __init__(self):
        self.name = None
    def sayHello(self):
        print "{} says hello!".format(self.name)
    def driver(self):
        for name in names:        # names is generated in the driver function by some means of input
            self.name = name
            self.sayHello()

您可以假设变量不仅限于name,并且多个函数正在使用这些变量。我要说明的要点是变量值在for循环内发生变化

1 个答案:

答案 0 :(得分:1)

即使您的示例在语法上是正确的,也完全无法帮助您理解有关如何使用实例属性的问题。

出于我的猜测,有两个问题:

  • 何时使用类方法(def foo(self, bar))?
  • 何时使用实例属性(self.name)?
当需要在函数之间“共享”变量或从函数外部检索变量时,应使用

Instance属性。该变量将“附加”到对象上(例如,汽车的颜色,用户的昵称...)

如果您的函数/方法需要调用此类变量,则必须使用self来获取它,因此在定义此函数时必须将其设置为第一个参数。

如果您只需要一个临时变量来对其进行循环并执行某些操作,则无需使用类方法,只需一个简单的函数即可解决问题。