Hướng dẫn python class prints local memory address - lớp python in địa chỉ bộ nhớ cục bộ

Nó có thể là một câu hỏi cơ bản bởi vì tôi bắt đầu học tự học với cuốn sách Think Python. Và có một bài tập mà tôi không im lặng theo dõi lý do tại sao không in chuỗi thẻ, thay vào đó nó in một địa chỉ bộ nhớ.

Đây là toàn bộ mã:

import random

class Card(object):
    '''Represents a standard playing card'''

    def __init__(self, suit=0, rank=2):
        self.suit = suit
        self.rank = rank

    suit_names = ['Clubs', 'Diamonds', 'Hearts', 'Spades']
    rank_names = [None, 'Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']

    def __str__(self):
        return '%s of %s' % (Card.rank_names[self.rank], Card.suit_names[self.suit])

    def __cmp__(self, other):
        t1= self.suit, self.rank
        t2 = other.suit, other.rank
        return cmp(t1, t2)

class Deck(object):

    def __init__(self):
        self.cards = []
        for suit in range(4):
            for rank in range(1,14):
                card = Card(suit, rank)
                self.cards.append(card)

    def __str__(self):
        res = []
        for card in self.cards:
            res.append(str(card))
        return '\n'.join(res)

    def pop_card(self):
        return self.cards.pop()

    def add_card(self, card):
        self.cards.append(card)

    def shuffle(self):
        random.shuffle(self.cards)

    def sort(self):
        self.cards.sort()

    def move_card(self, hand, num):
        for i in range(num):
            hand.add_card(self.pop_card())

    def deal_hands(self, _cards, hands):
        handsdeal = []
        for i in range(hands):
            hand = Hand()
            self.move_card(hand, _cards)
            handsdeal.append(hand.cards)
        return handsdeal

class Hand(Deck):

    def __init__(self, label=''):
        self.cards = []
        self.label = label

Hãy để tôi giải thích:

Tôi gọi phương thức Deal_Hands với boong j (j = boong ()) và _cards = 2 và tay = 3. Kết quả là danh sách bàn tay nhưng khi tôi in danh sách đó, tôi nhận được danh sách với danh sách như dự định nhưng với địa chỉ bộ nhớ xấu xí như các yếu tố. Tại sao điều này xảy ra và làm thế nào nó có thể được sửa chữa?

STR cũng nên được sử dụng bằng tay, phải không? should be used by Hand too, right?

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận

    Trong Python, mọi thứ đều là một đối tượng, từ các biến đến danh sách và từ điển, mọi thứ đều được coi là đối tượng. & NBSP; Trong bài viết này, chúng ta sẽ lấy địa chỉ bộ nhớ của một đối tượng trong Python. & NBSP;

    Syntax:

    id(object)

    Phương pháp 1: Sử dụng ID ()

    Chúng ta có thể nhận được một địa chỉ bằng hàm id (). Hàm id () cung cấp địa chỉ của đối tượng cụ thể.Python program to get the address of different objects

    Python3

    a = [1, ____________, 3____5____5____10____5____a 2

    a 4a 5a 6a 7

    a = =0

    a 4a 5a 6a 7

    a = a 51, ____________, 3____5____5____10____5__12

    a 4a 5a 6a 7

    a = 1415161, ____4916____________, 2

    a 4a 5a 6a 7

    Output:

    140234866534752

    94264748411744

    140234904267376

    140234866093264

    Làm cách nào để in một địa chỉ bộ nhớ trong Python?

    Sử dụng ID () để lấy địa chỉ bộ nhớ của một đối tượng.

    Syntax:

    addressof(c_int(object))

    an_object = {"A": 1}.

    object_id = id (an_object). Python program to get the memory address of  a variable

    Python3

    Hàm Python trả về địa chỉ bộ nhớ của một đối tượng là gì?

    Bạn sẽ cần một vài công cụ từ Thư viện tiêu chuẩn Python: id () trả về địa chỉ bộ nhớ của đối tượng.

    a 425

    Output:

    140234866278064

    Làm thế nào để Python truy cập bộ nhớ?

    Syntax:

    hex(id(object))

    where,

    • hex () là đại diện thập lục phân của bộ nhớ đến địa chỉ
    • ID được sử dụng để có được bộ nhớ của đối tượng
    • Đối tượng là dữ liệu

    Ví dụ: Chương trình Python để có được địa chỉ bộ nhớ trong biểu diễn thập lục phân. Python program to get the memory address in hexadecimal representation.

    Python3

    a = [1, ____________, 3____5____5____10____5____a 2

    a 4a 531a 5a 634

    a = =0

    a 4a 531a 5a 634

    a = a 51, ____________, 3____5____5____10____5__12

    a 4a 531a 5a 634

    a = 1415161, ____4916____________, 2

    a 4a 531a 5a 634

    Output:

    0x7fba9b0ae8c0

    0x5572da858b60

    0x7fba9f3c4a10

    0x7fba9b05b8c0


    Làm cách nào để in một địa chỉ bộ nhớ trong Python?

    Sử dụng ID () để lấy địa chỉ bộ nhớ của một đối tượng..
    an_object = {"A": 1}.
    object_id = id (an_object).
    print(object_id).

    Hàm Python trả về địa chỉ bộ nhớ của một đối tượng là gì?

    Bạn sẽ cần một vài công cụ từ Thư viện tiêu chuẩn Python: id () trả về địa chỉ bộ nhớ của đối tượng.id() returns the object's memory address.

    Làm thế nào để Python truy cập bộ nhớ?

    Quản lý bộ nhớ trong Python liên quan đến một đống riêng tư chứa tất cả các đối tượng Python và cấu trúc dữ liệu.Việc quản lý đống riêng tư này được đảm bảo trong nội bộ bởi Trình quản lý bộ nhớ Python.internally by the Python memory manager.

    Các lớp Python được lưu trữ trong bộ nhớ như thế nào?

    Phân bổ bộ nhớ trong Python Các phương thức/các cuộc gọi phương thức và các tham chiếu được lưu trữ trong bộ nhớ ngăn xếp và tất cả các đối tượng giá trị được lưu trữ trong một đống riêng tư.stack memory and all the values objects are stored in a private heap.