欢迎访问宙启技术站
智能推送

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中,内建对象提供了一些常用的方法和属性,可以帮助我们更好地创建自定义的类。我们可以根据需求重写这些方法和属性,以实现自己想要的功能。