我有这个小的测试代码,以了解类如何工作。
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”。目前,这只是一个值,因为这是测试代码。如果在这里能正常使用,我将它放在我的真实代码中以确保它能正常工作。
答案 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 python和here。 对于Getter和Setter来说,请看此link,您还可以在其中了解属性概念。