Вы можете использовать position: absolute
, чтобы поместить нижний колонтитул в нижней части страницы, но затем убедитесь, что ваши 2 столбца имеют соответствующий край внизу
, так что они никогда не закрываются нижним колонтитулом.
#footer {position: absolute; bottom: 0px; ширина: 100%; } #content, #sidebar {margin-bottom: 5em; }
ОК, прежде всего, вам не нужно получать ссылку на модуль на другое имя; у вас уже есть ссылка (из import
), и вы можете просто использовать ее. Если вы хотите другое имя, просто используйте import swineflu as f
.
Во-вторых, вы получаете ссылку на класс, а не на экземпляр класса.
Итак, это должно быть:
import swineflu
fibo = swineflu.fibo() # get an instance of the class
fibo.f() # call the method f of the instance
Метод bound - это тот, который привязан к экземпляру объекта. несвязанный метод - это, конечно, тот, который не прикреплен к экземпляру. Обычно ошибка означает, что вы вызываете метод в классе, а не на экземпляр, что в точности соответствует тому, что происходило в этом случае, потому что вы не создали экземпляр класса.
import swineflu
x = swineflu.fibo() # create an object `x` of class `fibo`, an instance of the class
x.f() # call the method `f()`, bound to `x`.
Здесь - хороший учебник для начала работы с классами на Python.
f
- метод (экземпляр). Однако вы вызываете его через fibo.f
, где fibo
- объект класса. Следовательно, f
является несвязанным (не привязанным к какому-либо экземпляру класса).
Если вы выполнили
a = fibo()
a.f()
, тогда f
привязан (к экземпляру a
). [/ д2]
fibo = f.fibo
ссылается на сам класс. Вероятно, вы хотели fibo = f.fibo()
(обратите внимание на круглые скобки), чтобы сделать экземпляр класса, после чего fibo.f()
должен преуспеть.
f.fibo.f()
терпит неудачу, потому что вы по существу вызов f(self, a=0)
без подачи self
; self
автоматически привязывается, когда у вас есть экземпляр класса.
В Python 2 (3 имеет другой синтаксис):
Что делать, если вы не можете создать экземпляр родительского класса, прежде чем вам нужно будет вызвать один из его методов?
Используйте super(ChildClass, self).method()
для доступа к родительским методам.
class ParentClass(object):
def method_to_call(self, arg_1):
print arg_1
class ChildClass(ParentClass):
def do_thing(self):
super(ChildClass, self).method_to_call('my arg')
Различия в версии python 2 и 3:
Если у вас уже есть метод по умолчанию в классе с тем же именем, и вы повторно объявляете его как одно и то же имя, он будет отображаться как вызов unbound-метода этот экземпляр класса, когда вы хотите его создать.
Если вам нужны методы класса, но вместо этого вы объявили их как методы экземпляра.
Метод экземпляра - это метод, который используется, когда создается экземпляр класса.
Примером может быть
def user_group(self): #This is an instance method
return "instance method returning group"
Метод метки класса:
@classmethod
def user_group(groups): #This is an class-label method
return "class method returning group"
В версиях python 2 и 3 отличается класс @classmethod для записи в python 3, он автоматически получить это как метод меток классов и не нужно писать @classmethod, я думаю, это может вам помочь.
swineflu.fibo().f()
, если вы только назовете его один раз. – Kit 16 February 2018 в 03:33