Вы всегда получаете кортеж, даже если возвращается только один столбец. Во втором примере вы распаковываете кортеж, но в первом случае вы этого не делаете, поэтому вы видите репер () кортежа.
Либо распакуйте его в цикле:
for comp, in cursor:
, либо просто ссылайтесь на элемент непосредственно при печати:
print(comp[0])
Обратите внимание: в скобках нет необходимости в инструкции for, даже при распаковке.
this
ключевое слово является ссылкой на текущий объект.
class Foo
{
private int bar;
public Foo(int bar)
{
// the "this" keyword allows you to specify that
// you mean "this type" and reference the members
// of this type - in this instance it is allowing
// you to disambiguate between the private member
// "bar" and the parameter "bar" passed into the
// constructor
this.bar = bar;
}
}
Другой способ думать об этом состоит в том, что this
ключевое слово похоже на персональное местоимение, которое Вы используете для ссылки на себя. Другие языки имеют различные слова для того же понятия. Использование VB Me
и конвенция Python (поскольку Python не использует ключевое слово, просто неявный параметр к каждому методу) должно использовать self
.
, Если необходимо было сослаться на объекты, которые являются внутренне Вашими, Вы сказали бы что-то вроде этого:
Мой рука или мой участок
Думают this
как просто путь к типу для высказывания "моего". Таким образом, psuedocode представление было бы похоже на это:
class Foo
{
private int bar;
public Foo(int bar)
{
my.bar = bar;
}
}
Ключевое слово this
может означать разные вещи в различных контекстах, это - вероятно, источник Вашего беспорядка.
Это может использоваться в качестве ссылки на объект, которая относится к экземпляру, к существующему методу обратились: return this;
Это может использоваться в качестве ссылки на объект, которая относится к экземпляру, который текущий конструктор создает, например, получить доступ к скрытым полям:
MyClass(String name)
{
this.name = name;
}
Это может использоваться для вызова другого конструктора класс из конструктора:
MyClass()
{
this("default name");
}
Это может привыкнуть к экземплярам включения доступа из вложенного класса:
public class MyClass
{
String name;
public class MyClass
{
String name;
public String getOuterName()
{
return MyClass.this.name;
}
}
}
ключевое слово this
является ссылкой на текущий объект . Это лучше всего объяснено со следующей частью кода:
public class MyClass {
public void testingThis()
{
// You can access the stuff below by
// using this (although this is not mandatory)
System.out.println(this.myInt);
System.out.println(this.myStringMethod());
// Will print out:
// 100
// Hello World
}
int myInt = 100;
string myStringMethod()
{
return "Hello World";
}
}
Это не использовало много, если у Вас нет стандарта кода в Вашем месте, говоря Вам использовать this
ключевое слово. Существует одно общее использование для него, и это - то, если Вы следуете конвенции кода, где у Вас есть названия параметра, которые совпадают с Вашими атрибутами класса:
public class ProperExample {
private int numberOfExamples;
public ProperExample(int numberOfExamples)
{
this.numberOfExamples = numberOfExamples;
}
}
Одно надлежащее использование этого ключевого слова должно объединить конструкторов в цепочку (делающий создающий объект, последовательный всюду по конструкторам):
public class Square {
public Square()
{
this(0, 0);
}
public Square(int x_and_y)
{
this(x_and_y, x_and_y);
}
public Square(int x, int y)
{
// finally do something with x and y
}
}
Это ключевое слово работает тот же путь в, например, C#.
"это" - ссылка на текущий объект.
Посмотрите детали здесь
Еще лучшее использование этого
public class Blah implements Foo {
public Foo getFoo() {
return this;
}
}
Это позволяет Вам конкретно "этому" объекту в текущем контексте. Другой пример:
public class Blah {
public void process(Foo foo) {
foo.setBar(this);
}
}
, Как еще мог Вы делать эти операции.
Ключевое слово' это ' относится к контексту текущего объекта. Во многих случаях (как Andrew указывает), Вы будете использовать явное это , чтобы прояснить, что Вы обращаетесь к текущему объекту.
кроме того, от' это и супер ':
*There являются другим использованием для этого. Иногда, когда Вы пишете метод экземпляра, необходимо передать объект, который содержит метод к подпрограмме как фактический параметр. В этом случае можно использовать это в качестве фактического параметра. Например, если бы Вы хотели распечатать строковое представление объекта, то Вы могли бы сказать "System.out.println (это)";. или Вы могли присвоить значение этого к другой переменной в операторе присваивания.
На самом деле, можно сделать что-либо с этим, что Вы могли сделать с любой другой переменной, кроме изменения ее значение.*
, Что сайт также относится к связанному понятию' супер ', который может оказаться полезным в понимании, как они работают с наследованием.
Это - ссылка фактического экземпляра класса в методе того же класса. кодируя
public class A{
int attr=10;
public int calc(){
return this.getA()+10;
}
/**
*get and set
**/
}//end class A
В calc () тело, программное обеспечение выполняет метод в объекте, выделяемом в настоящее время.
, Как возможно, что поведение объекта видит себя? С это ключевое слово, точно.
Действительно, этот ключевое слово не требует обязательного использования (как [1 110] супер ), потому что JVM знает, где называют метод в область памяти, но по-моему это делает код более readeable.
Это может быть также способ получить доступ к информации о текущем контексте. Например:
public class OuterClass
{
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
OuterClass()
{
InnerClass ic = new InnerClass(this);
}
class InnerClass
{
InnerClass(OuterClass oc)
{
System.out.println("Enclosing class: " + oc + " / " + oc.getClass());
System.out.println("This class: " + this + " / " + this.getClass());
System.out.println("Parent of this class: " + this.getClass().getEnclosingClass());
System.out.println("Other way to parent: " + OuterClass.this);
}
}
}
Думайте о нем с точки зрения английского языка, "этот объект" является объектом, который Вы в настоящее время имеете.
WindowMaker foo = new WindowMaker(this);
, Например, Вы в настоящее время в классе, который расширяется от JFrame, и Вы хотите передать ссылку на объект WindowMaker для JFrame, таким образом, это может взаимодействовать с JFrame. Можно передать ссылку на JFrame путем передачи его ссылки на объект, который называют "этим".