从python中的类返回多个值?

时间:2018-11-04 09:32:12

标签: python class variables

我有这个小的测试代码,以了解类如何工作。

class Person:
    def __init__(self):
      self.name = ("Mike")

    def myfunc(self):
      print("Hello my name is " + self.name)

p1 = Person()
hello = p1.myfunc()
hello

我想要的是self.name从类中返回,这样我就可以在类之外使用它。这可能吗?我希望返回的值不带“ hello my name is”字符串,因此在打印返回的值时,输出为“ Mike”而不是“ Hello my name is Mike”。目前,这只是一个值,因为这是测试代码。如果在这里能正常使用,我将它放在我的真实代码中以确保它能正常工作。

3 个答案:

答案 0 :(得分:0)

尝试使用p1.pname 而且p1.myfunc()不会给出输出,因此没有必要存储它

答案 1 :(得分:0)

(1)使用返回变量照常从类中的函数返回值。

(2)然后将其打印在类外部,变量=(myClass()。variable),然后打印变量。

(3)如果您不想将其打印出来,只需照常使用该变量即可。

您已经成功地从类中获取了值,并在整个程序中使用了它,而无需使用global关键字!

编辑似乎您甚至不需要返回值:(myClass()。variable)将直接从类中获取值,而无需返回该代码所支持的值,

>
class Person:
    def __init__(self):
        self.name1 = ("Mike")
        self.name2 = ("John")
        self.name3 = ("Jane")
        self.name4 = ("Doe")

name1, name2, name3, name4 = (Person().name1), (Person().name2), (Person().name3), (Person().name4)
print (name1, name2, name3, name4)

答案 2 :(得分:0)

在python中,没有一种方法可以限制或授予对属性的访问权限。默认情况下,您可以访问对象外部的属性,与Java不同,Java只能访问签名为public的属性。 因此,您可以通过编写$this->artisan('db:seed');直接检索实例上的name属性,其中person1是Person类的一个实例,但是在面向对象编程 OOP )。

另一种方法是创建两个函数,一个setter和一个getter,分别设置和返回感兴趣属性的值。在您的情况下,它将是:

person1.name

通过这种方式,您尊重OOP的某些原则数据封装,并且需要查看名称简单地在实例def setName(self,name): self.name = name def getName(self): return self.name 上调用方法的时候。

注意:

此方法的一个优点是,现在您可以验证实例可以采用的值。对于Person类和示例,设置数字没有任何意义,因此在更新它之前检查name参数是否确实是字符串会很好。

详细了解private attributes in pythonhere。 对于Getter和Setter来说,请看此link,您还可以在其中了解属性概念。