Python中内建对象(object())的核心功能解析
发布时间:2023-12-26 22:15:39
Python中内建对象(object())是所有类的基类,它定义了所有对象共有的属性和方法。在Python中,几乎一切都是对象,包括数字、字符串、列表等等,它们都是从object类继承而来。
1. 属性和方法继承:
对象可以继承自object类,从而获得object类中定义的属性和方法。例如,对象可以使用__class__属性获取其类名,也可以通过__str__()方法打印对象的字符串表示。
class MyClass(object):
pass
obj = MyClass()
print(obj.__class__) # <class '__main__.MyClass'>
print(obj.__str__()) # <__main__.MyClass object at 0x7f77e4bf03c8>
2. 对象的身份(identity):
每个对象在内存中都有一个 的身份标识,通过id()函数可以获取对象的身份。这个身份在对象的生命周期中是固定不变的。
obj1 = object()
obj2 = object()
print(id(obj1)) # 140386735178192
print(id(obj2)) # 140386735178208
3. 对象的比较:
对象可以使用==和!=进行比较,它们会比较对象的值是否相等。当对象的身份相同(即指向同一个内存地址)时,使用is关键字进行比较会返回True。
obj1 = object()
obj2 = object()
obj3 = obj1
print(obj1 == obj2) # False
print(obj1 != obj2) # True
print(obj1 is obj3) # True
4. 对象封装和解封装:
对象可以使用封装和解封装的方式进行数据的存取。
class MyClass(object):
def __init__(self, value):
self.value = value
obj = MyClass(10)
print(obj.value) # 10
5. 对象的垃圾回收:
对象有一个计数器,当没有引用指向该对象时,计数器的值会减1。当计数器的值为0时,对象就会被自动回收。
obj1 = object()
obj2 = obj1
del obj1
print(obj2) # <object object at 0x7f77e4bf03d8>
del obj2
print(obj2) # NameError: name 'obj2' is not defined
6. 定义自定义对象:
可以定义自己的类继承自object类,以实现自定义对象的功能。
class Person(object):
def __init__(self, name):
self.name = name
def say_hello(self):
print(f"Hello, {self.name}!")
p = Person("Alice")
p.say_hello() # Hello, Alice!
总结:
Python中内建对象(object())是所有类的基类,它提供了对象的一些核心功能,包括属性和方法的继承、身份的获取、对象的比较、封装和解封装、垃圾回收等。通过自定义类继承object类,可以创建自己的对象并实现自定义的功能。
