在python中从类返回多个值?

在python中从类返回多个值?,python,class,variables,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 m

我有这个小测试代码来看看类是如何工作的

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”。现在,它只是一个值,因为这是一个测试代码。如果它在这里工作得很好,我将把它放在我的真实代码中以确保它工作。

尝试使用
p1.pname
并且
p1.myfunc()
不会给出输出,因此没有必要存储它(1)使用返回变量,以正常方式从类中的函数返回值

(2) 然后在类外打印变量=(myClass().variable),然后打印变量

(3) 如果不想打印出来,只需正常使用变量即可

您已经成功地从类中获取值并在整个程序中使用它,而不需要全局关键字

编辑它看起来您甚至不需要返回值:(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)

在python中,没有限制或授予对属性的访问权限的方法。默认情况下,您可以访问对象外部的属性,这与Java不同,Java只能访问像public一样经过签名的属性。 因此,您可以通过编写
person1.name
直接检索实例上的name属性,其中person1是Person类的一个实例,但是在面向对象编程中这是一种不好的做法(OOP

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

def setName(self,name):
    self.name = name

def getName(self):
    return self.name
这样,您就遵守了OOP数据封装的一些原则,当您需要查看simple在实例
person1.getName()
上调用方法的名称时

注: 这种方法的一个优点是,现在您可以验证实例可以假定的值。对于Person类和示例,设置一个数字是没有意义的,所以在更新名称参数之前检查名称参数是否真的是一个字符串会很好

阅读更多关于和。
对于getter和setter,您也可以在这里了解属性概念。

print(p1.name)
?您可以通过
p1.name
-访问名称,对于您从classi创建的任何其他
Person
对象,您已经尝试将return放入myfunc(self)中但是在那之后我该怎么办呢?请注意,
hello=…
分配给
None
,因为您在
myfunc
中不返回任何内容。如何从函数返回多个值已经得到了回答,因此除非您解释您的问题与该问题的不同之处,否则无需发布答案。