Python中的内建对象(object())详解
发布时间:2023-12-26 22:10:53
在Python中,内建对象(object())是所有类的基类。它是一个通用的对象,几乎所有的类都继承自object类。它提供了一些常用的方法和属性,可以用于自定义的类。
下面是内建对象提供的一些常用方法和属性的详解,并附有示例代码:
1. __new__(cls, *args, **kwargs): 这是一个静态方法,用于创建一个类的实例。它接受类作为 个参数,并可以接受其他参数。
class Person(object):
def __new__(cls, name, age):
print("Creating a Person instance")
return super(Person, cls).__new__(cls)
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 25)
输出:
Creating a Person instance
2. __init__(self, *args, **kwargs): 这是一个初始化方法,用于对实例的属性进行初始化。它接受类的实例作为 个参数,并可以接受其他参数。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 25)
print(person.name, person.age)
输出:
Alice 25
3. __str__(self): 这是一个转换为字符串的方法,用于返回一个对象的字符串表示。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
person = Person("Alice", 25)
print(person)
输出:
Person(name=Alice, age=25)
4. __repr__(self): 这是一个更详细的转换为字符串的方法,用于返回一个可用于表示对象的字符串。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name={self.name}, age={self.age})"
person = Person("Alice", 25)
print(repr(person))
输出:
Person(name=Alice, age=25)
5. __eq__(self, other): 这是一个判断相等性的方法,用于比较两个对象是否相等。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __eq__(self, other):
return self.name == other.name and self.age == other.age
person1 = Person("Alice", 25)
person2 = Person("Alice", 25)
person3 = Person("Bob", 30)
print(person1 == person2)
print(person1 == person3)
输出:
True False
6. __hash__(self): 这是一个返回对象哈希值的方法,用于将对象转换为一个 的整数。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __hash__(self):
return hash((self.name, self.age))
person = Person("Alice", 25)
print(hash(person))
输出:
-1042036062
7. __setattr__(self, name, value): 这是一个设置属性的方法,用于设置一个对象的属性。
class Person(object):
def __setattr__(self, name, value):
self.__dict__[name] = value
person = Person()
person.name = "Alice"
person.age = 25
print(person.name, person.age)
输出:
Alice 25
8. __getattr__(self, name): 这是一个获取属性的方法,用于获取一个对象的属性。
class Person(object):
def __getattr__(self, name):
return f"Value of {name} is not defined"
person = Person()
print(person.name)
print(person.age)
输出:
Value of name is not defined Value of age is not defined
在Python中,内建对象提供了一些常用的方法和属性,可以帮助我们更好地创建自定义的类。我们可以根据需求重写这些方法和属性,以实现自己想要的功能。
