один и тот же объект, имеющий другое значение, в зависимости от другого объекта, закомментирован или нет - PullRequest
0 голосов
/ 09 января 2019

Я абсолютный новичок в ООП на Python. Я создаю простой класс как книгу и создаю 2 экземпляра как book_1 и book_2 этого. Пока я печатаю их значения, печать страницы или имени book_1 - это печать значений из book_2, что странно, когда я комментирую часть book_2, тогда book_1 возвращает правильное значение, связанное с book_1.

Я пробовал этот код в «Spyder» и «Idle», оба дают одинаковый результат. Пожалуйста, прости мою наивность, задавая такой вопрос, я задаю вопрос на этом сайте впервые. Спасибо всем заранее за помощь.

class book:
    def __init__(self,title,author,page):
        book.title = title
        book.author = author
        book.page = page

    bsize = 5
    bsize += 1

    def bookname(self):
        return(book.title + ' - by ' + book.author)


book_1 = book('pather daabi', 'bankim', 350)

# if I comment out the below line for book_2, book_1 is printing correctly

book_2 = book('sei samoi', 'sunil', 145)

print(book_1.page)
print(book_1.bookname())

# if I comment out the below line for book_2, book_1 is printing correctly

print(book.bookname(book_2))
print(book.bsize)

1 Ответ

0 голосов
/ 09 января 2019

Исправленный код:

class book:
    def __init__(self,title,author,page):
        self.title = title
        self.author = author
        self.page = page

    bsize = 5
    bsize += 1

    def bookname(self):
        return(self.title + ' - by ' + self.author)


book_1 = book('pather daabi', 'bankim', 350)

# if I comment out the below line for book_2, book_1 is printing correctly

book_2 = book('sei samoi', 'sunil', 145)

print(book_1.page)
print(book_1.bookname())

350
pather daabi - by bankim

# if I comment out the below line for book_2, book_1 is printing correctly

print(book.bookname(book_2))
print(book.bsize)


sei samoi - by sunil
6

Вам нужно использовать self, который относится к экземпляру любого класса, с которым вы работаете, который в данном случае равен book. Я думаю, что это нормальная практика или соглашение, но постарайтесь, чтобы названия ваших классов были написаны заглавными буквами - в данном случае это будет Book. Ничего серьезного, кроме как следовать соглашению. На другом примечании: Не уверен, для чего предназначен bsize или что он делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...