Python -- OOP高级 -- 枚举类】的更多相关文章

Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较. from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', \ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) for name, member in Month.__members__.items(): print("%s => %s, %d&q…
type()函数既可以返回一个对象的类型,又可以创建出新的类型 def fn(self, name="world"): print("Hello, %s!" % name) Hello = type("Hello", (object,), dict(hello=fn)) h = Hello() >>> h.hello() Hello, world! >>> type(h) Out[165]: __main__.…
__str__ 和 __repr__ :实例对象直接显示字符串 class Student: def __init__(self, name): self.name = name def __str__(self): return "Name: %s" % self.name __repr__ = __str__ >>> s = Student("Zoro") >>> s Out[]: Name: Zoro # __str__()…
开发中我们经常定义常量, 其实有更好的方法:为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例.Python中提供了Enum类来实现这个功能: from enum import Enum Numbers = Enum('Name', ('乔峰', '鸠摩智', '段誉', '阿紫', '虚竹','慕容复')) for name, member in Numbers.__members__.items(): print(name, '=>', member, ','…
当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12 好处是简单,缺点是类型是int,并且仍然是变量. 更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例.Python提供了Enum类来实现这个功能: from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr',…
__slots__属性可以设置 允许被设置的属性 class Student: __slots__ = ("name", "age") >>> s = Student() >>> s.age = >>> s.name = "Zoro" >>> s.score = Traceback (most recent call last): File , in <module&g…
from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) for name, member in Month.__members__.items(): print(name, '=>', member, ',', member.value) Jan => Month.Jan , 1 Feb =&…
本文旨在Python复习和总结: 1.如何创建类和实例? # 创建类 class ClassName(object): """docstring for ClassName""" def __init__(self, arg): super(ClassName, self).__init__() self.arg = arg # 创建实例 instance = ClassName() 2.经典类与新式类的区别? 3.什么是方法?如何定义?如何使用…
转自  http://www.cnblogs.com/BeginMan/p/3510786.html 本文旨在Python复习和总结: 1.如何创建类和实例? # 创建类 class ClassName(object): """docstring for ClassName""" def __init__(self, arg): super(ClassName, self).__init__() self.arg = arg # 创建实例 ins…
当在类体内定义好各种属性后,外部是可以随便添加属性的,Python中类如何限制实例的属性? Python自带了很多定制类,诸如__slots__,__str__ __slots__ __slots__方法是在类创建时,为实例限定属性的 class Student(object): __slots__=('name','age') pass >>>s = Student() >>>s.name='tom' >>>s.age='age' >>&…