Thing的基本属性如下:
stone = Thing(' stone')
在OOP中,我们在初始化期间将此属性设置为None,此Thing不属于任何Person(表示没有对象值)。
石头。所有者无
假
4.get_owner():返回拥有Thing对象的Person对象。
石头。 get_owner()无
实现类Thing,使其满足上述属性和方法。
我不确定我的代码有什么问题:
class Thing:
def __init__(self,name):
self.name=name
self.owner=None
def is_owned(self):
return self.owner!=None
def get_owner(self):
return self.owner
我的问题: 正如问题所述,当我输入stone.owner时,我希望收到输出无。但是,根本没有输出。 编辑:没有接收输出而不是无。但是,有没有办法从stone.owner返回None?
答案 0 :(得分:2)
以下是使用getter属性的答案。
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
completionHandler(handleQuickAction(shortcutItem: shortcutItem))
}
private func handleQuickAction(shortcutItem: UIApplicationShortcutItem) -> Bool {
let shortcutType = shortcutItem.type
guard let shortcutIdentifier = QuickAction(fullIdentifier: shortcutType)
else {
return false
}
guard let tabBarController = window?.rootViewController as? UITabBarController else {
return false
}
switch shortcutIdentifier {
case .Home:
tabBarController.selectedIndex = 0
case .LatestPhoto:
tabBarController.selectedIndex = 1
}
return true
}
输出是这样的:
class Thing(object):
def __init__(self, name):
self.name = name
self.owner = None
@property
def isOwned(self):
return self.owner is not None
thing = Thing('stone')
print("owner:", thing.owner)
print("isOwned:", thing.isOwned)
print("Setting owner.")
thing.owner = "Silver"
print("owner:", thing.owner)
print("isOwned:", thing.isOwned)
答案 1 :(得分:1)
self
作为参数。所以,你的代码必须是:
class Thing:
def __init__(self,name):
self.name=name
self.owner="None"
def is_owned(self):
return self.owner!="None"
def get_owner(self):
return self.owner
答案 2 :(得分:1)
没有打印任何内容的原因很可能是Python REPL不会打印None
值
问题中的当前代码优于接受的答案(缩进除外),因为None
是Python中的奇异值,而"None"
是普通字符串(它不等于{{1也不被视为None
值,这两个值都适用于False
)。