Нет одной роли, связанной с экземпляром; скорее, роль связана с методом , называемым экземпляром. Попробуйте это.
PATH = 'home_drive_'
PLATFORM = 'Linux_'
ITEM = '_PC'
class Credential:
def __init__(self, *, path, platform, **kwargs):
super().__init__(**kwargs)
self.username_file = path + platform
class AXL(Credential):
def __init__(self, *, item, **kwargs):
super().__init__(**kwargs)
self.item = item
# "Private" method used to implement the other phone methods
# You could inline this if you want.
def _phone(self, role):
return self.username_file + role + self.item
def getphone(self):
return self._phone('r')
def writephone(self):
return self._phone('rw')
def statusphone(self):
return self._phone('rwx')
reg1 = AXL(path=PATH, platform=PLATFORM, item=ITEM)
print(reg1.getphone())
print(reg1.writephone())
print(reg1.statusphone())
Обратитесь к ответу Mark Brittingham для того, как разработать его, хотя я не думаю, именно это Вы спрашиваете здесь. Я предоставлю Вам техническую подробную информацию о том, как это работает (и почему это является довольно блестящим).
Смотрите на строку состояния, когда Вы нависнете над Ссылкой на профайл в заголовке...
http://www.facebook.com/profile.php?id=514287820&ref=profile
Это - то, где на это <a> тег указывают. Теперь посмотрите на строку поиска при нажатии на нее...
http://www.facebook.com/home.php#/profile.php?id=514287820&ref=profile
Заметить "#" идентификатор/хеш фрагмента? Это в основном доказывает, что Вы не оставили страницу, и предыдущий запрос был выполнен с Ajax. Они прерывают события щелчка на этих ссылках и переопределяют функциональность по умолчанию с чем-то собственным.
Чтобы заставить это произойти с JavaScript, все, что необходимо сделать, присваивают обработчика события Click тем ссылкам как так...
var header = document.getElementById('header');
var headerLinks = header.getElementsByTagName('a');
for(var i = 0, l = headerLinks.length; i < l; i++) {
headerLinks[i].onclick = function() {
var href = this.href;
//Load the AJAX page (this is a whole other topic)
loadPage(href);
//Update the address bar to make it look like you were redirected
location.hash = '#' + href;
//Unfocus the link to make it look like you were redirected
this.blur();
//Prevent the natural HTTP redirect
return false;
}
}
Одно невероятное преимущество для этого подхода - то, что он позволяет кнопке "Назад" быть функциональной (с небольшим добавленным обманом), который традиционно был болезненным побочным эффектом хронического использования Ajax. Я не на 100% уверен в том, каков этот обман, но я держал пари, что он так или иначе может обнаружить, когда браузер изменяет идентификатор фрагмента (возможно путем проверки его каждые ~500 миллисекунд).
Как примечание стороны, изменяя хеш на значение, которое не может быть найдено в DOM (с помощью идентификатора элемента) прокрутит страницу полностью к вершине. Для наблюдения то, о чем я говорю: Вы прокручиваете приблизительно 10 пикселей вниз от верхней части Facebook, выставляя половину главного меню. Нажмите на один из объектов, он перейдет он назад до верхней части страницы, как только идентификатор фрагмента обновляется (без любого окна задержка repaint/redraw).
Один способ предоставить заголовки и нижние колонтитулы, которые кажутся инвариантными, с помощью CSS - вот пример фиксированного нижнего колонтитула (заметьте "положение: зафиксированный";):
#Footer {
font-size:xx-small;
text-align:left;
width:100%;
bottom:0px;
position:fixed;
left:0px;
background-color: #CCCCCC;
border-top: 1px solid #999999;
padding:4px;
padding-right:20px;
color:#666666;
}
Вы захотите удостовериться, что Вы добавляете некоторую Граничную Нижнюю часть к своим отделениям страницы (те, которые заполняют основную часть страницы) оставлять комнату для фиксированного нижнего колонтитула (то же с заголовком с помощью Граничной Вершины).
Это на самом деле не остается на странице, но, потому что расположение является настолько трудным и инвариантным, появится, как будто это делает, если Ваши загрузки страницы не занимают слишком много времени. Я не знаю, является ли это тем, что делает Facebook, но он даст Вам почти такой же эффект.
С CSS абсолютное/фиксированное расположение, теги Div, содержащие заголовки и нижние колонтитулы, может быть где угодно в HTML. Как наверху!
На актуальнейших браузерах существует задержка рендеринга, одна четверть, вторая для Firefox, которому я верю, так, чтобы страница не отображала частично представленное содержание в быстрых вспышках и тратила впустую много времени, тянущего, поскольку сетевые данные входят.
Таким образом, то, что может произойти, - то, что новая страница быстро возвращает HTML, содержащий стили и заголовок и нижний колонтитул. Это содержание может быть представлено сразу браузером, поэтому когда это отображает следующую страницу, появляется, как будто они не изменились.
Если страница генерирует динамический контент, хороший прием должен поместить всю статическую информацию наверху, произвести это и сбросить буфер данных. Затем сделайте запросы базы динамических данных и такой.
Увеличивать ответ Josh Stodola: В моем понимании менеджера закладок YUI делает точно это задание.
Ну, способ выполнить такую вещь был бы через Ajax, но насколько я вижу, Facebook на самом деле не делает этого... Я просто проверил, и это обновляет заголовок как большинство сайтов...
Править: Когда я сначала ответил на это, я смотрел на Facebook с Google Chrome (2.0), который по любой причине, на самом деле не делает этого этот путь->, когда я нажимаю на My Profile от домашней страницы, это дает мне это в строке поиска: http://www.facebook.com/profile.php?id=1304250071&ref=profile
и поэтому обновляет целую страницу... Странно