Python创建对象

时间:2017-04-09 06:51:10

标签: python class oop

Thing的基本属性如下:

  1. 构造函数应该包含1个参数,即Thing的名称。
  2. stone = Thing(' stone')

    1. owner:存储Thing的所有者对象的属性,通常是Person对象。
    2. 在OOP中,我们在初始化期间将此属性设置为None,此Thing不属于任何Person(表示没有对象值)。

      石头。所有者

      1. is_owned():返回一个布尔值,如果该东西是“拥有”则返回True,否则返回False。
      2. 石头。 is_owned()

        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?

3 个答案:

答案 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)

  1. 当你编写python代码时,你需要关心缩进。
  2. 班级中的每个职能都需要self作为参数。
  3. 所以,你的代码必须是:

    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)。