面向对象进阶
Posted chenadong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象进阶相关的知识,希望对你有一定的参考价值。
class Foo(object): def __init__(self, name, age): self.name = name self.age = age def __getitem__(self, item): if hasattr(self, item): return self.__dict__[item] def __setitem__(self, key, value): self.__dict__[key] = value def __delitem__(self, key): del self.__dict__[key] foo = Foo("adong", "28") print foo["name"], foo["age"] foo["height"] = "175" print foo["height"] del foo["height"] print foo["height"] >>> adong 28 175 None
class F: def __init__(self, name): self.name = name def __new__(cls, *args, **kwargs): return object.__new__(cls) f1 = F("adong") f2 = F("aqiang") print f1 print f2 >>> <__main__.F instance at 0x0000000003A70E88> <__main__.F instance at 0x0000000003A70E48> # 实例化的结果是两个对象
class F: __instance = False def __init__(self, name): self.name = name def __new__(cls, *args, **kwargs): if cls.__instance: return cls.__instance else: cls.__instance = object.__new__(cls) return cls.__instance f1 = F("adong") f2 = F("aqiang") print f1 print f2 >>> <__main__.F instance at 0x0000000003A90E88> <__main__.F instance at 0x0000000003A90EC8> # 单例模式,但是地址不一样,不知道是哪里的问题
以上是关于面向对象进阶的主要内容,如果未能解决你的问题,请参考以下文章