python - 对象没有属性,使用类
问题描述
不断获取“RestaurantReview”对象没有属性“_RestaurantReview__name”,但似乎我已将所有内容从 Review 类正确传递到 ReviewRestaurant
class Review:
def __init__(self, nm, dt, strs):
self.__name = nm
self.__date = dt
self.__stars = strs
def set_name(self, name):
self.__name = name
def set_date(self, date):
self.__date = date
def set_stars(self,stars):
self.__stars = stars
def get_name(self):
return self.__name
def get_date(self):
return self.__date
def get_stars(self):
return self.__stars
def __str__(self):
return 'RESTAURANT: ' + 'Name: ' + str(self.__name) + 'Date: ' + str(self.__date) + 'Number of stars: ' + str(self.__stars)
class RestaurantReview:
def __init__(self, nm, dt, strs, csne):
Review.__init__(self, nm, dt, strs)
self.__cuisine = csne
def set_cuisine(self, cuisine):
self.__cuisine = cuisine
def get_cuisine(self):
return self.__cuisine
def __str__(self):
return 'RESTAURANT: ' + 'Name: ' + str(self.__name) + 'Date: ' + str(self.__date) + 'Number of stars: ' + str(self.__stars) + 'Cuisine' + str(self.__cuisine)
def main():
r2 = RestaurantReview('Red Robin', '5-3-18', 4, 'Burgers')
print(r2)
main()
解决方案
您需要将 RestaurantReview 声明为 Review 的子类:
class Review:
def __init__(self, nm, dt, strs):
self.__name = nm
self.__date = dt
self.__stars = strs
def __str__(self):
return 'RESTAURANT: ' + 'Name: ' + str(self.name) + 'Date: ' + str(self.date) + 'Number of stars: ' + str(self.stars)
@property
def name(self):
return self.__name
@property
def date(self):
return self.__date
@property
def stars(self):
return self.__stars
class RestaurantReview(Review):
def __init__(self, nm, dt, strs, csne):
super(RestaurantReview, self).__init__(nm, dt, strs)
self.__cuisine = csne
@property
def cuisine(self):
return self.__cuisine
def __str__(self):
return 'RESTAURANT: ' + 'Name: ' + str(self.name) + 'Date: ' + str(self.date) + 'Number of stars: ' + str(self.stars) + 'Cuisine' + str(self.cuisine)
def main():
r2 = RestaurantReview('Red Robin', '5-3-18', 4, 'Burgers')
print(r2)
main()
您不需要私有化您的属性,否则您必须创建 getter 方法来访问您的每个私有属性。
编辑:我将属性保留为私有,并添加了属性以获取它们的值。
推荐阅读
- node.js - 如何观察双向管道流?
- python - 如何使用 KMLSUPEROVERLAY 驱动程序在 GDAL 上设置级别
- git - 分支名称变得奇怪
- xcode - 验证目标 ''Runner'' 的 codesign entitlements 构建设置的值是否正确以及磁盘上的文件退出颤动
- azure - PowerShell 帮助处理多个请求
- azure-data-explorer - Kusto:投影或过滤是否能节省更多时间?
- java - android中后台服务中的当前位置不起作用
- html - 无法使用 Vue.js 在可重用组件之间添加自定义内容
- javascript - 在一个 URL 中分配多个变量 (Javascript)
- node.js - sinonjs - 使用节点模块将内部引用为函数的库存根(不需要)