Форум сайта python.su
Доброе время суток. помоги разобратся с заданием. Вобщем надо создать класс CFile, инкапсулирующий в себе такие функции работы с файлами, как Open, Close, Seek, Read, Write, GetPosition и GetLength. Ha базе этого класса создать производный класс CMyDataFile — файл, содержащий в себе данные некоторого определенного типа MyData, а также заголовок, облегчающий доступ к этому файлу. посоветуйте(помогите =) ) как лучше написать программу, демонстрирующую работу с этими классами. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов.
Отредактировано (Ноя. 15, 2010 07:53:38)
Офлайн
В Python ООП не имеет понятия инкапсуляция, потому что все члены класса в Python - public
Офлайн
@Carzil:
#!/bin/env python
class Something(object):
def __init__(self, a):
self.__a = a
if __name__ == '__main__':
s = Something(12)
print(s.__a)
Офлайн
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)
Офлайн
Что вы в это двойное подчеркивание уцепились.
Инкапсуляция - это контракт между разработчиками, а не средство защиты информации.
Уже давно использую только одно подчеркивание для закрытых атрибутов - и мне хватает.
Так что инкапсуляция в Питоне - есть.
Офлайн
Андрей СветловА как боретесь с остальными разработчиками? Ведь за всеми код не просмотришь
Инкапсуляция - это контракт между разработчиками, а не средство защиты информации.
Уже давно использую только одно подчеркивание для закрытых атрибутов - и мне хватает.
Офлайн
Веником по рукам.
А что, строгая инкапсуляция по примеру С++ или Явы гарантирует избавление от кривых рук и плохого дизайна?
Офлайн
Я новечек в програмирование, с чего посоветуете начать делать это задание.
Офлайн
Почитай о классах и представь что класс - это куб. И у него есть свои методы(перемещение в пространстве(x,y,z), клик мышкой, клавишей, молотком ударить его ишшо можно, например) и свойства (длина, ширина, высота, вес) каждый метод - это и есть некая ф-ция в классе, а свойства - переменные. Вот когда этот куб опишешь как класс - вот тогда и поймешь ООП.
Отредактировано (Ноя. 17, 2010 13:17:01)
Офлайн
ZigertoN, может тебе это? надо:
f = open('test.txt', 'w')
sys.stdout = f #перенаправление вывода не на экран, который по умолчанию, а в файл
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)
Офлайн