Технически нет никакой разницы, это только вопрос стиля и условности.
Дуглас Крокфорд рекомендует использовать одинарные кавычки для внутренних строк и двойные кавычки для внешних (по внешнему мы подразумеваем те, которые должны отображаться пользователю приложения , как сообщения или предупреждения).
Я лично следую этому.
UPDATE: Похоже, что г-н Крокфорд передумал и теперь рекомендует использовать двойные кавычки:)
То, что происходит, - это то, что экземпляр проекта в вашем классе контроллера не изменяется, когда вы передаете его в класс Register, но проект в классе Register изменился, и это изменение не будет передано классу Controller, и путь к нему делать что-то вроде этого
class Controller():
def __init__(self):
self.project = Project()
def proc(self):
self.r = Register(self.project)
self.r.load()
self.project = self.r.project
Это дает мне желаемый результат, я не знаю никаких других требований, но именно так я бы поступил в этом направлении.