Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2010 07:52:34

ZigertoN
От:
Зарегистрирован: 2010-10-27
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

классы и методы

Доброе время суток. помоги разобратся с заданием. Вобщем надо создать класс CFile, инкапсулирующий в себе такие функции работы с файлами, как Open, Close, Seek, Read, Write, GetPosition и GetLength. Ha базе этого класса создать производный класс CMyDataFile — файл, содержащий в себе данные некоторого определенного типа MyData, а также заголовок, облегчающий доступ к этому файлу. посоветуйте(помогите =) ) как лучше написать программу, демонстрирующую работу с этими классами. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов.



Отредактировано (Ноя. 15, 2010 07:53:38)

Офлайн

#2 Ноя. 16, 2010 23:35:06

Carzil
От:
Зарегистрирован: 2010-05-26
Сообщения: 106
Репутация: +  0  -
Профиль   Отправить e-mail  

классы и методы

В Python ООП не имеет понятия инкапсуляция, потому что все члены класса в Python - public



Офлайн

#3 Ноя. 16, 2010 23:51:08

AlexKiriukha
От:
Зарегистрирован: 2008-02-03
Сообщения: 81
Репутация: +  0  -
Профиль   Отправить e-mail  

классы и методы

@Carzil:

#!/bin/env python

class Something(object):
def __init__(self, a):
self.__a = a

if __name__ == '__main__':
s = Something(12)
print(s.__a)



Офлайн

#4 Ноя. 17, 2010 05:07:54

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

классы и методы

AlexKiriukha
@Carzil:
#!/bin/env python

class Something(object):
def __init__(self, a):
self.__a = a

if __name__ == '__main__':
s = Something(12)
print(s.__a)
    print(s._Something__a)



Офлайн

#5 Ноя. 17, 2010 06:27:54

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

классы и методы

Что вы в это двойное подчеркивание уцепились.
Инкапсуляция - это контракт между разработчиками, а не средство защиты информации.
Уже давно использую только одно подчеркивание для закрытых атрибутов - и мне хватает.
Так что инкапсуляция в Питоне - есть.



Офлайн

#6 Ноя. 17, 2010 08:07:39

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

классы и методы

Андрей Светлов
Инкапсуляция - это контракт между разработчиками, а не средство защиты информации.
Уже давно использую только одно подчеркивание для закрытых атрибутов - и мне хватает.
А как боретесь с остальными разработчиками? Ведь за всеми код не просмотришь



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Ноя. 17, 2010 08:52:13

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

классы и методы

Веником по рукам.
А что, строгая инкапсуляция по примеру С++ или Явы гарантирует избавление от кривых рук и плохого дизайна?



Офлайн

#8 Ноя. 17, 2010 10:01:44

ZigertoN
От:
Зарегистрирован: 2010-10-27
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

классы и методы

Я новечек в програмирование, с чего посоветуете начать делать это задание.



Офлайн

#9 Ноя. 17, 2010 13:16:19

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

классы и методы

Почитай о классах и представь что класс - это куб. И у него есть свои методы(перемещение в пространстве(x,y,z), клик мышкой, клавишей, молотком ударить его ишшо можно, например) и свойства (длина, ширина, высота, вес) каждый метод - это и есть некая ф-ция в классе, а свойства - переменные. Вот когда этот куб опишешь как класс - вот тогда и поймешь ООП.

Отредактировано (Ноя. 17, 2010 13:17:01)

Офлайн

#10 Ноя. 17, 2010 13:32:09

python4ik
От:
Зарегистрирован: 2010-01-05
Сообщения: 251
Репутация: +  0  -
Профиль   Отправить e-mail  

классы и методы

ZigertoN, может тебе это? надо:

f = open('test.txt', 'w')
sys.stdout = f #перенаправление вывода не на экран, который по умолчанию, а в файл
теперь если ввести print ‘Hello’ , то запишется в файл, а не на экран!
вот ещё что-то нашел в нете:
class OutputManager:
def __init__(self, filename, console):
self.f = open(filename, 'w')
self.con = console

def write(self, data):
self.con.write(data)
self.f.write(data)

new_stdout = OutputManager("test.txt", sys.stdout)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version