При присвоении os.path.isfile атрибуту класса возникает ошибка типа Error [duplicate]

Вы можете использовать position: absolute , чтобы поместить нижний колонтитул в нижней части страницы, но затем убедитесь, что ваши 2 столбца имеют соответствующий край внизу , так что они никогда не закрываются нижним колонтитулом.

  #footer {position: absolute;  bottom: 0px;  ширина: 100%;  } #content, #sidebar {margin-bottom: 5em;  }  
124
задан Eric Leschinski 6 November 2014 в 22:07
поделиться

6 ответов

ОК, прежде всего, вам не нужно получать ссылку на модуль на другое имя; у вас уже есть ссылка (из 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 - это тот, который привязан к экземпляру объекта. несвязанный метод - это, конечно, тот, который не прикреплен к экземпляру. Обычно ошибка означает, что вы вызываете метод в классе, а не на экземпляр, что в точности соответствует тому, что происходило в этом случае, потому что вы не создали экземпляр класса.

162
ответ дан kindall 17 August 2018 в 10:36
поделиться
  • 1
    Вы также можете сделать swineflu.fibo().f(), если вы только назовете его один раз. – Kit 16 February 2018 в 03:33
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.

67
ответ дан Eric Leschinski 17 August 2018 в 10:36
поделиться
  • 1
    Я создал экземпляр класса, но он работает только при использовании метода @staticmethod. Можно ли это объяснить? – abeltre1 18 September 2017 в 03:24

f - метод (экземпляр). Однако вы вызываете его через fibo.f, где fibo - объект класса. Следовательно, f является несвязанным (не привязанным к какому-либо экземпляру класса).

Если вы выполнили

a = fibo()
a.f()

, тогда f привязан (к экземпляру a ). [/ д2]

3
ответ дан lijie 17 August 2018 в 10:36
поделиться

fibo = f.fibo ссылается на сам класс. Вероятно, вы хотели fibo = f.fibo() (обратите внимание на круглые скобки), чтобы сделать экземпляр класса, после чего fibo.f() должен преуспеть.

f.fibo.f() терпит неудачу, потому что вы по существу вызов f(self, a=0) без подачи self; self автоматически привязывается, когда у вас есть экземпляр класса.

9
ответ дан Mark Rushakoff 17 August 2018 в 10:36
поделиться

В 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')
2
ответ дан Peter Graham 17 August 2018 в 10:36
поделиться

Различия в версии 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, я думаю, это может вам помочь.

0
ответ дан Projesh Bhoumik 17 August 2018 в 10:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: