Hướng dẫn python get object reference id - python lấy id tham chiếu đối tượng

Điều này sẽ tương tự như phương pháp java.lang.Object.hashcode().

Tôi cần lưu trữ các đối tượng Tôi không có quyền kiểm soát trong một tập hợp và đảm bảo rằng chỉ khi hai đối tượng thực sự là cùng một đối tượng (không chứa cùng một giá trị), các giá trị sẽ được ghi đè.

Hướng dẫn python get object reference id - python lấy id tham chiếu đối tượng

Dzieciou

3.7477 Huy hiệu vàng37 Huy hiệu bạc74 Huy hiệu đồng7 gold badges37 silver badges74 bronze badges

Hỏi ngày 9 tháng 8 năm 2009 lúc 21:40Aug 9, 2009 at 21:40

2

id(x)

Sẽ làm thủ thuật cho bạn. Nhưng tôi tò mò, có gì sai về tập hợp các đối tượng (kết hợp các đối tượng theo giá trị)?

Đối với vấn đề cụ thể của bạn, có lẽ tôi sẽ giữ bộ ID hoặc của các đối tượng trình bao bọc. Một đối tượng trình bao sẽ chứa một tham chiếu và so sánh bằng x==y x.ref is y.ref.

Cũng đáng chú ý là các đối tượng Python cũng có chức năng hash. Hàm này là cần thiết để đặt một đối tượng vào một tập hợp hoặc từ điển. Nó được cho là đôi khi va chạm cho các đối tượng khác nhau, mặc dù việc triển khai tốt hash cố gắng làm cho nó ít có khả năng hơn.

Đã trả lời ngày 9 tháng 8 năm 2009 lúc 21:42Aug 9, 2009 at 21:42

ilya n.ilya n.ilya n.

Huy hiệu vàng 18K1570 Huy hiệu bạc89 Huy hiệu đồng15 gold badges70 silver badges89 bronze badges

7

Đó là những gì "is" dành cho.

Thay vì kiểm tra "if a == b", kiểm tra cùng một giá trị,

Kiểm tra "if a is b", sẽ kiểm tra cùng một định danh.

Đã trả lời ngày 9 tháng 8 năm 2009 lúc 21:43Aug 9, 2009 at 21:43

Vicki Laidlervicki LaidlerVicki Laidler

3,3851 Huy hiệu vàng18 Huy hiệu bạc17 Huy hiệu đồng1 gold badge18 silver badges17 bronze badges

2

Như ilya n đề cập, id (x) tạo ra một định danh duy nhất cho một đối tượng.

Nhưng câu hỏi của bạn thật khó hiểu, vì phương thức HashCode của Java không cung cấp một định danh duy nhất. HashCode của Java hoạt động như hầu hết các hàm băm: nó luôn trả về cùng một giá trị cho cùng một đối tượng, hai đối tượng bằng nhau luôn nhận được mã bằng nhau và các giá trị băm không bằng nhau ngụ ý mã băm không bằng nhau. Cụ thể, hai đối tượng khác nhau và không đồng đều có thể nhận được cùng một giá trị.

Điều này thật khó hiểu vì các hàm băm mật mã hoàn toàn khác với điều này và giống như (mặc dù không chính xác) "ID duy nhất" mà bạn yêu cầu.

Tương đương python của phương pháp hashcode của Java là băm (x).

Đã trả lời ngày 9 tháng 8 năm 2009 lúc 21:48Aug 9, 2009 at 21:48

Ned Batchelderned BatchelderNed Batchelder

353K71 Huy hiệu vàng553 Huy hiệu bạc650 Huy hiệu Đồng71 gold badges553 silver badges650 bronze badges

4

Bạn không cần phải so sánh các đối tượng trước khi đặt chúng thành một bộ. Đặt () ngữ nghĩa đã quan tâm đến việc này.

   class A(object): 
     a = 10 
     b = 20 
     def __hash__(self): 
        return hash((self.a, self.b)) 

   a1 = A()
   a2 = A()
   a3 = A()
   a4 = a1
   s = set([a1,a2,a3,a4])
   s
=> set([<__main__.A object at 0x222a8c>, <__main__.A object at 0x220684>, <__main__.A object at 0x22045c>])

Lưu ý: Bạn thực sự không cần phải ghi đè Hash để chứng minh hành vi này :-)hash to prove this behaviour :-)

Đã trả lời ngày 14 tháng 1 năm 2015 lúc 6:17Jan 14, 2015 at 6:17

2

❮ Chức năng tích hợp sẵn


Thí dụ

Trả về ID duy nhất của đối tượng tuple:

x = ('apple', 'chuối', 'cherry') y = id (x)
y = id(x)

Hãy tự mình thử »


Định nghĩa và cách sử dụng

Hàm

   class A(object): 
     a = 10 
     b = 20 
     def __hash__(self): 
        return hash((self.a, self.b)) 

   a1 = A()
   a2 = A()
   a3 = A()
   a4 = a1
   s = set([a1,a2,a3,a4])
   s
=> set([<__main__.A object at 0x222a8c>, <__main__.A object at 0x220684>, <__main__.A object at 0x22045c>])
0 trả về một ID duy nhất cho đối tượng được chỉ định.

Tất cả các đối tượng trong Python có ID duy nhất của riêng nó.

ID được gán cho đối tượng khi nó được tạo.

ID là địa chỉ bộ nhớ của đối tượng và sẽ khác nhau cho mỗi lần bạn chạy chương trình. (Ngoại trừ một số đối tượng có ID duy nhất không đổi, như số nguyên từ -5 đến 256)


Cú pháp

Giá trị tham số

Tham sốSự mô tả
sự vậtBất kỳ đối tượng, chuỗi, số, danh sách, lớp, v.v.

❮ Chức năng tích hợp sẵn


Làm cách nào để tìm ID của một đối tượng trong Python?

Hàm id () trả về một id duy nhất cho đối tượng được chỉ định.Tất cả các đối tượng trong Python có ID duy nhất của riêng nó.ID được gán cho đối tượng khi nó được tạo.. All objects in Python has its own unique id. The id is assigned to the object when it is created.

Tôi có thể nhận được giá trị từ ID trong Python không?

Trong bài viết này, chúng tôi sẽ thảo luận về cách lấy giá trị từ địa chỉ trong Python.Đầu tiên, chúng ta phải tính toán địa chỉ bộ nhớ của đối tượng biến hoặc python có thể được thực hiện bằng cách sử dụng hàm id ().trong đó, python_object là bất kỳ biến python hoặc cấu trúc dữ liệu như danh sách, bộ tuple, v.v.calculate the memory address of the variable or python object which can be done by using the id() function. where, python_object is any python variable or data structure like list, tuple set, etc.

Sự khác biệt giữa phương thức loại () và id () trong python là gì?

hàm id () Trả về danh tính của hàm đối tượng.type () trả về loại đối tượng. type() function returns the type of the object.

ID cho một đối tượng là gì?

id () là một hàm sẵn có trong Python.Cú pháp: ID (đối tượng) Vì chúng ta có thể thấy hàm chấp nhận một tham số duy nhất và được sử dụng để trả về danh tính của một đối tượng.Bản sắc này phải là duy nhất và không đổi cho đối tượng này trong suốt cuộc đời.Hai đối tượng có tuổi thọ không chồng chéo có thể có cùng giá trị id ().