59. 类有哪些内置的属性? ------------------------- 在Python3.0以上版本里面,所有的类都是默认从Object继承而来。那他就会带有Object的属性。 我们可以通过dir()函数来查看。我们可以写一个简单的类来查看其属性。:: class Book: pass print(dir(Book)) #输出内容为: ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__'] book = Book() print(dir(book)) 我们由浅入深,以及是否常用来逐个来介绍其含义和用法。 * '__doc__' 是类的文档字符串,help函数会把这部分内容进行输出。 * '__dict__’ 用于存储可写属性的词典。 * '__module__' 定义这个类的模块名称。 * '__eq__' "equal"的缩写,等于比较"=="调用这个方法。 * '__ge__' "greater than or equal"的缩写, 大于等于">="调用这个方法。 * '__gt__' "greater than"的缩写, 大于比较">"调用这个方法。 * ’__le__' "less than or equal"的缩写, 小于或等于"<="调用这个方法。 * '__lt__' "less than"的缩写,小于比较"<"就调用这个方法。 * ’__ne__' "not equal"的缩写,不等于比较"!="调用这个方法。 * "__class__", 实例所属的类 * "__hash__" 返回对象的散列函数值。如果两个对象通过"__eq__"比较相等,那 其散列后的值也必须相同,如果我们没有自己实现"__hash__", 那散列值和其实际 地址相关。 * "__new__" 在创建新实例时被调用,它是一个静态方法。 * "__init__" 在实例创建后被调用,但是在返回给用户之前。它返回None。 * "__sizeof__" 在自定义类型时,如果使用sys.getsizeof()函数获取对象大小可能不准 我们需要重写__sizeof__函数来计算对象大小。 对于我们自定义类,如果我们要比较对象,我们需要自己来实现这些方法。例如两本书 使用价格来比较大小 :: class Book: """Class Book demo""" def __init__(self, price): self.price = price def __gt__(self, other): return self.price>other.price b= Book(10) c= Book(20) print("book:") print(c>b) 通常如果实现“__gt__”,那其他5个函数也需要实现。 还有一些是不在dir函数中显示的方法, * __bases__ 类的基类构成的元组 * "__name__" 类的名称,是一个字符串 * "__del__" 在对实例进行del时,该成员函数被调用。 例如"__name__":: print(Book.__name__) #输出Book, 这是类属性。