【发布时间】:2021-11-27 19:03:59
【问题描述】:
我正在尝试创建一个包含字段列表的类。请参阅下面的代码。
class Character:
# Private Fields:
__age = 18
__weight = 200
__height = 72
def __init__(self, name):
self.__name = name
@property
def get_age(self):
return self.__age
@property
def get_name(self):
return self.__name
@property
def get_weight(self):
return self.__weight
@property
def get_height(self):
return self.__height
person = Character("someone")
print("name =", person.get_name,",", "age =", person.get_age)
有没有办法避免为您要访问的每个私有字段编写@property?例如,有没有办法将属性传递给更通用的 getter 函数,例如:
def get_attr(self,attr):
#set attr to __attr
#return self.attr
我尝试使用join函数,但没有成功
感谢您的帮助
【问题讨论】:
-
使用数据类?
-
你检查过
namedtuple()类生成器吗? -
你能...直接访问这些字段吗? Getter 是 Python 中的一种反模式,属性旨在创建看起来像字段的方法。只需公开这些字段即可。
-
这看起来像您正在尝试用 Python 编写 Java。尝试在类级别初始化实例属性,编写 getter,在这些 getter 的名称中写“get”...
-
Python 没有私有字段。这是理解的关键。请注意,您所有的
propertys 都是完全没有意义。只需删除它们,并使用常规属性self.name等,在__init__中初始化