Один из моих приемов избранного с ударом является "каналом tar". Когда у Вас есть чудовищное количество файлов для копирования от одного каталога до другого, делание "CP */an/other/dir" не работает, если количество файлов слишком высоко, и взорвите удар globber, таким образом, канал tar:
(cd /path/to/source/dir/ ; tar cf - * ) | (cd /path/to/destination/ ; tar xf - )
... и если у Вас есть netcat, Вы можете даже делать "netcat канал tar" через сеть!!
Первым аргументом для метода класса Python является переменная self
. Если вы вызываете classInstance.method (parameter)
, метод вызывается как method (self, parameter)
.
Итак, когда вы определяете свой класс, сделайте что-нибудь вроде это:
class MyClass(Object):
def my_method(self, parameter):
print parameter
Вы можете прочитать учебник Python .
Потому что вы не передаете объект (обычно называемый self
) в качестве первого параметра вашим методам. В Python такой вызов:
my_obj.do_something(my_other_obj)
, по сути, превращается в такой вызов:
MyClass.do_something(my_obj, my_other_obj)
Таким образом, Python ищет сигнатуру метода, подобную этой:
class MyClass(object):
def do_something(self, my_other_obj):
self.my_var = my_other_obj
Итак, вы должны передать объект (обычно называемый self
) в качестве первого параметра метода .
Вам необходимо явно передать переменную self
, которая представляет экземпляр класса, например:
def set(self, file):
filepermission = os.stat(file)
self.user_read()
self.user_write()
self.user_exec()
Ее не нужно называть self
, но это хорошее соглашение, и ваш код будет понят другим программистам.
self
- неявный первый аргумент для всех функций-членов класса. Таким образом, вызов i.set (place)
фактически вызывает set (i, place)
. Вы должны принять это во внимание при определении своего класса и вместо этого написать def set (self, file)
.
set ()
- это метод класса chkup
. Когда вы вызываете i.set (place)
, python отслеживает экземпляр i, используя первый аргумент метода. Как правило, каждый метод экземпляра получает по крайней мере один аргумент, называемый self, и последующие аргументы следуют. Вам следует переопределить свой класс:
class chkup:
def set(self, file):
"etc..."
Вы можете найти «self» и python в stackoverflow:
Python __init__ и self, что они делают?
и т. Д.
В классе необходимо учитывать параметр self
для членов метода.
Поскольку вы обрабатываете set
как связанный (экземплярный) метод класса, вы должны явно получить экземпляр в качестве первого аргумента. По соглашению он называется "self".
def set(self, file):
filepermission = os.stat(file)
user_read()
user_write()
user_exec()
, чтобы определить нестатический метод, вы должны указать "self" в качестве первого аргумента, как этот
class chkup:
def set(self,file):
filepermission = os.stat(file)
# это делается для создания нестатических методов,
# вызов set () здесь выполняется
chk = chkup ()
chk.set (fileName) # обратите внимание, что вы не указываете «self» при вызове
Т.е. поскольку питон автоматически передает текущий объект в качестве аргумента всем методам в классе, то при передаче 2 аргументов в функцию, питон добавляет третий аргумент, которым является текущий объект, то прототип метода должен учитывать это
.