ZigertoN
Ноя. 15, 2010 07:52:34
Доброе время суток. помоги разобратся с заданием. Вобщем надо создать класс CFile, инкапсулирующий в себе такие функции работы с файлами, как Open, Close, Seek, Read, Write, GetPosition и GetLength. Ha базе этого класса создать производный класс CMyDataFile — файл, содержащий в себе данные некоторого определенного типа MyData, а также заголовок, облегчающий доступ к этому файлу. посоветуйте(помогите =) ) как лучше написать программу, демонстрирующую работу с этими классами. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов.
Carzil
Ноя. 16, 2010 23:35:06
В Python ООП не имеет понятия инкапсуляция, потому что все члены класса в Python - public
AlexKiriukha
Ноя. 16, 2010 23:51:08
@Carzil:
#!/bin/env python
class Something(object):
def __init__(self, a):
self.__a = a
if __name__ == '__main__':
s = Something(12)
print(s.__a)
pyuser
Ноя. 17, 2010 05:07:54
AlexKiriukha
@Carzil:
#!/bin/env python
class Something(object):
def __init__(self, a):
self.__a = a
if __name__ == '__main__':
s = Something(12)
print(s.__a)
Андрей Светлов
Ноя. 17, 2010 06:27:54
Что вы в это двойное подчеркивание уцепились.
Инкапсуляция - это контракт между разработчиками, а не средство защиты информации.
Уже давно использую только одно подчеркивание для закрытых атрибутов - и мне хватает.
Так что инкапсуляция в Питоне - есть.
PooH
Ноя. 17, 2010 08:07:39
Андрей Светлов
Инкапсуляция - это контракт между разработчиками, а не средство защиты информации.
Уже давно использую только одно подчеркивание для закрытых атрибутов - и мне хватает.
А как боретесь с остальными разработчиками? Ведь за всеми код не просмотришь
Андрей Светлов
Ноя. 17, 2010 08:52:13
Веником по рукам.
А что, строгая инкапсуляция по примеру С++ или Явы гарантирует избавление от кривых рук и плохого дизайна?
ZigertoN
Ноя. 17, 2010 10:01:44
Я новечек в програмирование, с чего посоветуете начать делать это задание.
helm2004
Ноя. 17, 2010 13:16:19
Почитай о классах и представь что класс - это куб. И у него есть свои методы(перемещение в пространстве(x,y,z), клик мышкой, клавишей, молотком ударить его ишшо можно, например) и свойства (длина, ширина, высота, вес) каждый метод - это и есть некая ф-ция в классе, а свойства - переменные. Вот когда этот куб опишешь как класс - вот тогда и поймешь ООП.
python4ik
Ноя. 17, 2010 13:32:09
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)