在 class 中使用私有变量创建列表
Creating a list using private variables in a class
我正在创建一个名为 Pet
的 class。我将我的变量设为私有,因此没有人可以修改它们(确保封装)。我想使用私有变量创建一个列表。
然后我希望能够调用我的 pet_list
列表 在 之外 class 我将在以后使用它的地方(我是否需要创建一个 getter 为我的列表里面 Pet
class 做这个?)。
我是 python 的新手,但我正在尝试使用面向对象的原则进行编码。
到目前为止,这是我的代码。
我在想,因为我的 pet
变量是私有的,所以我需要使用 setter 来设置列表中的 Pet
吗?但是当我想打印 set_pet() missing 1 required positional argument: 'pet'
.
时出现此错误
class Pet:
def __init__(self, pet ):
self.pet = pet
def set_pet(self, pet):
self.__pet = pet
def get_pet(self):
return self.__pet
#creating list
pet_list = []
p = Pet
pet_list.append(p.set_pet("cat"))
pet_list.append( Pet("dogs"))
pet_list.append( Pet("fish"))
pet_list.append( Pet("horses"))
pet_list.append( Pet("birds"))
for obj in pet_list:
print(obj.pet)
问题出在 p = Pet
。此处您没有初始化 class Pet
的实例,而是将 p
设置为等于 class。而是使用
p = Pet("The pet you want")
你得到错误 set_pet() missing 1 required positional argument: 'pet'
的原因是因为 "cat"
被作为位置参数传递而不是 self
因此就好像你只传递了 1参数。
此外,pet_list.append(p.set_pet("cat"))
会将 None
附加到列表中,因为您只设置了 属性 而没有返回任何内容,所有其他的都应该按预期正常工作。
我正在创建一个名为 Pet
的 class。我将我的变量设为私有,因此没有人可以修改它们(确保封装)。我想使用私有变量创建一个列表。
然后我希望能够调用我的 pet_list
列表 在 之外 class 我将在以后使用它的地方(我是否需要创建一个 getter 为我的列表里面 Pet
class 做这个?)。
我是 python 的新手,但我正在尝试使用面向对象的原则进行编码。
到目前为止,这是我的代码。
我在想,因为我的 pet
变量是私有的,所以我需要使用 setter 来设置列表中的 Pet
吗?但是当我想打印 set_pet() missing 1 required positional argument: 'pet'
.
class Pet:
def __init__(self, pet ):
self.pet = pet
def set_pet(self, pet):
self.__pet = pet
def get_pet(self):
return self.__pet
#creating list
pet_list = []
p = Pet
pet_list.append(p.set_pet("cat"))
pet_list.append( Pet("dogs"))
pet_list.append( Pet("fish"))
pet_list.append( Pet("horses"))
pet_list.append( Pet("birds"))
for obj in pet_list:
print(obj.pet)
问题出在 p = Pet
。此处您没有初始化 class Pet
的实例,而是将 p
设置为等于 class。而是使用
p = Pet("The pet you want")
你得到错误 set_pet() missing 1 required positional argument: 'pet'
的原因是因为 "cat"
被作为位置参数传递而不是 self
因此就好像你只传递了 1参数。
此外,pet_list.append(p.set_pet("cat"))
会将 None
附加到列表中,因为您只设置了 属性 而没有返回任何内容,所有其他的都应该按预期正常工作。