파이썬 질문 있습니다.

cross의 이미지

에디터를 gedit를 씁니다.

vi는 아직 적응 중이고 해서 일단 가볍고 플러그인 깔면

쓸만해져서 이용하고 있는데요.

한가지 단점이 끄고 나면 끄기 전에 작업했던 창이

다시 시작할 때 나타나게 하는 플러그인이 없더군요.

그래서 그냥 파이썬으로 플러그인 하나 만들려고 하는데요.

문제는 제가 파이썬을 모른다는 거였죠.

그래서 이 기회에 파이썬 공부 좀 해보자 해서,

무대뽀로 이미 코딩되 있는 Gedit 플러그인을 살펴 봤습니다.

일단 자바하고 비슷한 점이 많은게 어느 정도는 이해가 가더라구요.

근데 self.~~~로 사용되는 메소드나 속성이 많았는데

이게 어떻게 쓰이는지 도무지 이해가 안가는 겁니다.

처음에는 이게 자신에게 있는 메소드를 불러 쓰는건가 하고

찾아보니 이게 자신에게 있는 것도 있고 없는 것도 있는 겁니다.

어쩌면 import 했었던 api에서 불러 쓰는게 아닌가 하고 살펴보니

역시나 있었는데 어떤 메소드는 self 없이 그냥 사용되는 것들도

있는 거 같고 도무지 헷갈려서 이해를 못하겠더군요.

그래서 파이썬에 대해서 잘 설명된 싸이트하고

self의 용도에 대해서 자세히 좀 알려 주실 분

계실거 같아서 여기에 글남깁니다.

feanor의 이미지

Python의 self는 Java의 this와 같은 뜻입니다. 메소드들은 첫번째 인자로 self를 받습니다.

Java와는 달리 Python에서는 메소드가 아닌 (어떤 클래스에도 속하지 않는) 함수를 정의할 수 있습니다.

cross의 이미지

답변 감사드립니다.
근데 궁금한게 더 있는데요.
전역 변수가 아닌 메소드에서 정의된 속성값을 다른 메소드에서
self.~으로 사용할 수도 있는 건가요?
그리고 정의하지 않고 그냥 self.~식으로만 써놓고 여러 곳에서
사용하는 것 같기도 하고 말이죠.
예를 들어 self.docs가 있다면 docs란 속성이 없고 그냥
뜬금 없이 self.docs가 나와서 사용되는 겁니다.
그리고 더 구체적으로
self._config = self._dlg_conf.get_config()란 문구가 있는데
_config는 정의되어 있지 않구요.
좀 복잡하네요.

klara의 이미지

Python은 동적 타이핑 언어입니다.
C/C++이나 Java등과 같이 변수를 특정 형으로 선언해서 사용할 필요가 없이, 변수를 처음으로 사용하면 그때 그 변수가 선언되고 형은 그 변수에 대입되는 값에 의해 자동으로 결정됩니다.

d3m3vilurr의 이미지

일단 gedit에서 끈 파일을 다시 여는 플러그인은 있습니다.
session saver 라는 플러그인이 제공될겁니다.

우분투라면 apt-get install gedit-plugins 를 하시면 해당 플러그인들이 설치 될겁니다.

두번째 위에서 답변이 나왔지만, self는 객체 인스턴스의 메서드나 필드를 참조할때 사용하는 키워드는 맞습니다.
(self는 관습적인 이름인데,
def foo(self, arg1, arg2, **argn) 형태의 메서드 정의에서,
self라는 변수로 자신을 참조함을 명시적으로 지정하는것 뿐입니다.)

파이썬은 동적 언어이기 때문에, 메서드나 변수를 아무 위치에서나 추가 할 수 있으며, 객체 외부에서도 추가할 수 있습니다.

class Foo:
  def foo(self):
    print self.a
 
a = Foo()
a.foo() # AttributeError 발생
 
a.a = "something string"
a.foo() # 정상적으로 처리됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.