__init__와 self는 Python에서 무엇을 합니까?
Python 프로그래밍 언어를 배우고 있는데 잘 모르는 것을 발견했어요.
다음과 같은 방법으로:
def method(self, blah):
def __init__(?):
....
....
무인 does does 가 뭐죠?self
슨 의사????
「 」가 죠?__init__
why ? 왜등)
OOP 구성품일 수도 있지만 잘 모르겠어요.
이 코드에서는:
class A(object):
def __init__(self):
self.x = 'Hello'
def method_a(self, foo):
print self.x + ' ' + foo
...그self
자체의 .대부분의 객체 지향 언어에서는 이를 객체에 정의된 메서드에 숨겨진 매개 변수로 전달합니다. 파이톤당신은 그것을 분명히 선언해야 합니다.의 할 때A
및 메서드를됩니다. 를 들어 클래스에서는 자동으로 통과됩니다.
a = A() # We do not pass any argument to the __init__ method
a.method_a('Sailor!') # We only pass a single argument
__init__
메서드는 대략 Python에서 컨스트럭터를 나타내는 것입니다.했을 때A()
하여 첫 로 Python에 합니다.__init__
" " ) :A(24, 'Hello')
이 경우 예상되지 을 사용하다이 경우 컨스트럭터가 인수로 간주하지 않기 때문에 예외가 발생합니다.
그래, 네 말이 맞아, 이건 oop 공사야.
__init__
이치노self
(예를 들어 다음과 같이)를.this
C++)라고 합니다.
class Point:
def __init__(self, x, y):
self._x = x
self._y = y
__init__
개체의 메모리가 할당된 후 메서드가 호출됩니다.
x = Point(1,2)
때 사용하는 합니다.self
오브젝트 메서드 내의 파라미터를 지정합니다. '', '아까', '아까', '아까', '아까', '아까', '아까', 이렇게 __init__
하다
class Point:
def __init__(self, x, y):
_x = x
_y = y
의 ★★★★★★★★★★★★★★★★★.x
★★★★★★★★★★★★★★★★★」y
파라미터는 스택상의 변수에 저장되며 init 메서드가 범위를 벗어나면 폐기됩니다.를 「」로 설정한다.self._x
★★★★★★★★★★★★★★★★★」self._y
를 "이러한 변수"의 합니다.Point
object( 「 」 「 」 「 。
주의: 이 답변에서 "시공자"라는 단어의 사용에 대한 일부 설명.기술적으로 "컨스트럭터"의 책임은 파이썬에서 두 가지 방법으로 나누어집니다.은 「」입니다.__new__
) 및 (메모리 할당 담당)__init__
(여기서 설명한 바와 같이 새로 생성된 인스턴스의 초기화를 담당합니다).
간단한 예시
도움이 될 것하기 위해 .__init__
★★★★
class MyClass(object):
i = 123
def __init__(self):
self.i = 345
a = MyClass()
print(a.i)
print(MyClass.i)
출력:
345
123
요컨대:
self
그것이 시사하는 바와 같이, 그 자체를 말한다 - 메서드를 호출한 대상이다.즉, 메서드를 호출하는N개의 오브젝트가 있는 경우self.a
는 각 N개의 오브젝트에 대해 변수의 개별 인스턴스를 참조합니다. N개의 이 있다고 합니다.a
__init__
C++/Java 등 다른 OOP 언어에서는 컨스트럭터라고 불립니다.이 클래스의 오브젝트가 생성되면 자동으로 호출되는 특수한 메서드라는 것이 기본 개념입니다.
클래스 오브젝트는 Atribute Reference와 Instantization의 두 가지 조작을 지원합니다.
속성 참조는 Python의 모든 속성 참조에 사용되는 표준 구문(obj.name을 사용합니다.유효한 속성 이름은 클래스 개체를 만들 때 클래스의 네임스페이스에 있던 모든 이름입니다.클래스 정의가 다음과 같은 경우:
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
MyClass.i
★★★★★★★★★★★★★★★★★」MyClass.f
아트리뷰트 레퍼런스클래스 를 에도 있습니다., 「클래스 Atribute」의 값을 할 수 .MyClass.i
할당에 의해 __doc__
docstring "A simple example class" 。
클래스 인스턴스화는 함수 표기법을 사용합니다.클래스 개체가 클래스의 새 인스턴스를 반환하는 매개 변수가 없는 함수라고 가정합니다.예를 들어 다음과 같습니다.
x = MyClass()
인스턴스화 작업("클래스 개체를 호출")은 빈 개체를 만듭니다.대부분의 클래스는 특정 초기 상태로 사용자 지정된 인스턴스가 있는 개체를 만드는 것을 좋아합니다.따라서 클래스는 다음과 같은 특별한 메서드를 정의할 수 있습니다.__init__()
이렇게요.
def __init__(self):
self.data = []
되어 있는 __init__()
됩니다.__init__()
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★따라서 이 예에서는 새로운 초기화된 인스턴스를 다음과 같이 얻을 수 있습니다.
x = MyClass()
ㅇㅇㅇ는,__init__()
메서드는 이우경클iation are are are are are are in in in in in in in in in in in in in in in 로 넘어갑니다.__init__()
를 들면★★★★★★★★★★★★★★★★★★,
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
x.r, x.i
공문서에서 따온 건데 결국 가장 큰 도움이 됐어요
여기 나의 예가 있다.
class Bill():
def __init__(self,apples,figs,dates):
self.apples = apples
self.figs = figs
self.dates = dates
self.bill = apples + figs + dates
print ("Buy",self.apples,"apples", self.figs,"figs
and",self.dates,"dates.
Total fruitty bill is",self.bill," pieces of fruit :)")
Bill 클래스의 인스턴스를 만드는 경우:
purchase = Bill(5,6,7)
다음과 같은 이점을 얻을 수 있습니다.
> Buy 5 apples 6 figs and 7 dates. Total fruitty bill is 18 pieces of
> fruit :)
__init__
컨스트럭터처럼 행동합니다.자기'는 수업의 는 수업의 경우 입니다. '자기'는 자기입니다.
이 코드를 사용해 보세요.나 같은 많은 C 프로그래머들이 Learn Py를 배우는데 도움이 되길 바랍니다.
#! /usr/bin/python2
class Person:
'''Doc - Inside Class '''
def __init__(self, name):
'''Doc - __init__ Constructor'''
self.n_name = name
def show(self, n1, n2):
'''Doc - Inside Show'''
print self.n_name
print 'Sum = ', (n1 + n2)
def __del__(self):
print 'Destructor Deleting object - ', self.n_name
p=Person('Jay')
p.show(2, 3)
print p.__doc__
print p.__init__.__doc__
print p.show.__doc__
출력:
Jay
Sum = 5
Doc - Inside Class
Doc - __init__ Constructor
Doc - Inside Show
Destructor Deleting object - Jay
내가 이걸 풀기가 힘들었어.여기서 정답을 읽고 나서도.
올바르게 __init__
자기 자신을 이해하는 방법.
셀프 파라미터
에서 __init__
은 다음과 같습니다
def __init__(self, arg1, arg2):
그러나 실제로는 두 가지 인수만 전달합니다.
instance = OurClass('arg1', 'arg2')
추가 논쟁은 어디서 비롯되었는가?
오브젝트의 속성에 액세스 할 때는, 이름(또는 참조)으로 액세스 합니다.다음은 새로운 오브젝트에 대한 참조입니다.instance.printargs를 사용하여 인스턴스 객체의 printargs 메서드에 액세스합니다.
"Attribute" 내에서 __init__
메서드 오브젝트에 대한 참조가 필요합니다.
메서드가 호출될 때마다 메인 객체에 대한 참조가 첫 번째 인수로 전달됩니다.관례상 이 첫 번째 인수는 항상 방법 자체라고 부릅니다.
, ,에서는,__init__
수 있는 : method method 、 는 method method :
self.arg1 = arg1
self.arg2 = arg2
여기서는 객체에 속성을 설정합니다.이것을 확인하려면 , 다음의 순서에 따릅니다.
instance = OurClass('arg1', 'arg2')
print instance.arg1
arg1
이와 같은 값을 객체 속성이라고 합니다.여기서 메서드는 인스턴스의 arg1 및 arg2 속성을 설정합니다.
출처 : http://www.voidspace.org.uk/python/articles/OOP.shtml#the-init-method
주목하다self
비단뱀Chris B는 크리스 B라는 이름을 가지고 있다.
class A(object):
def __init__(foo):
foo.x = 'Hello'
def method_a(bar, foo):
print bar.x + ' ' + foo
똑같은 방식으로 작동하게 될 겁니다그러나 다른 파이더들이 더 쉽게 인식할 수 있기 때문에 셀프 사용을 권장합니다.
자아는 무엇을 하나요?그게 무슨 뜻이죠?의무사항인가요?
init을 포함한 모든 클래스 메서드의 첫 번째 인수는 항상 클래스의 현재 인스턴스를 참조합니다.관례상 이 인수는 항상 이름이 붙는다.self
에서는 init을 합니다self
는 새로 생성된 오브젝트를 나타냅니다.다른 클래스 메서드에서는 메서드가 호출된 인스턴스를 나타냅니다.
Python은 당신에게 "self"를 사용하도록 강요하지 않습니다.원하는 이름을 붙일 수 있습니다.그러나 메서드 정의의 첫 번째 인수는 개체를 참조하는 것입니다.Python은 다음을 추가합니다.self
인수를 목록에 추가합니다.를 하지 를 하지 않은 에는 자기공개를 하지 않은 에는 자기공개를 하지 에는 자기공개를 하지 않으면 자기공개를 하게 됩니다.
TypeError: __init___() takes no arguments (1 given)
init 메서드의 역할은 무엇입니까?왜 그래야 하죠?(등)
init
는 초기화의 줄임말입니다.클래스의 인스턴스를 만들 때 호출되는 생성자이며 필요하지 않습니다.그러나 일반적으로는 객체의 기본 상태를 설정하기 위해 init 메서드를 쓰는 것이 관례입니다.처음에 오브젝트 상태를 설정하지 않으면 이 메서드를 쓸 필요가 없습니다.
기본적으로 같은 클래스 내의 여러 함수로 변수를 사용할 때는 'self' 키워드를 사용해야 합니다.init에 대해서는, 그 클래스내의 다른 함수가 호출되지 않게 디폴트치를 설정하기 위해서 사용합니다.
__init__
는 기본적으로 특정 객체의 클래스 속성을 "초기화"/"초기화"하여 대응하는 클래스에 일치시키는 함수입니다.self
이러한 속성을 상속할 개체를 나타냅니다.
'self'는 클래스 인스턴스에 대한 참조입니다.
class foo:
def bar(self):
print "hi"
이제 foo 인스턴스를 생성하여 메서드를 호출할 수 있습니다.이 경우 self 파라미터는 Python에 의해 추가됩니다.
f = foo()
f.bar()
그러나 메서드 호출이 클래스의 인스턴스 컨텍스트에 포함되지 않은 경우에도 아래 코드는 동일한 작업을 수행합니다.
f = foo()
foo.bar(f)
흥미롭게도 변수 이름 'self'는 단지 관례일 뿐이다.다음 정의도 동일하게 동작합니다.항상 따라야 하는 매우 강력한 관습이라고 말했지만, 언어의 유연한 성질을 말해준다.
class foo:
def bar(s):
print "hi"
질문에 대한 데모입니다.
class MyClass:
def __init__(self):
print('__init__ is the constructor for a class')
def __del__(self):
print('__del__ is the destructor for a class')
def __enter__(self):
print('__enter__ is for context manager')
return self
def __exit__(self, exc_type, exc_value, traceback):
print('__exit__ is for context manager')
def greeting(self):
print('hello python')
if __name__ == '__main__':
with MyClass() as mycls:
mycls.greeting()
$ python3 class.objects_instantiation.py
__init__ is the constructor for a class
__enter__ is for context manager
hello python
__exit__ is for context manager
__del__ is the destructor for a class
이 코드에서는:
class Cat:
def __init__(self, name):
self.name = name
def info(self):
print 'I am a cat and I am called', self.name
서 ★★★★__init__
는 클래스의 생성자 역할을 하며 객체가 인스턴스화되면 이 함수가 호출됩니다. self
는 인스턴스화 객체를 나타냅니다.
c = Cat('Kitty')
c.info()
상기 문장의 결과는 다음과 같습니다.
I am a cat and I am called Kitty
# Source: Class and Instance Variables
# https://docs.python.org/2/tutorial/classes.html#class-and-instance-variables
class MyClass(object):
# class variable
my_CLS_var = 10
# sets "init'ial" state to objects/instances, use self argument
def __init__(self):
# self usage => instance variable (per object)
self.my_OBJ_var = 15
# also possible, class name is used => init class variable
MyClass.my_CLS_var = 20
def run_example_func():
# PRINTS 10 (class variable)
print MyClass.my_CLS_var
# executes __init__ for obj1 instance
# NOTE: __init__ changes class variable above
obj1 = MyClass()
# PRINTS 15 (instance variable)
print obj1.my_OBJ_var
# PRINTS 20 (class variable, changed value)
print MyClass.my_CLS_var
run_example_func()
여기 이 남자는 꽤 훌륭하고 심플하게 글을 썼다.https://www.jeffknupp.com/blog/2014/06/18/improve-your-python-python-classes-and-object-oriented-programming/
위의 링크를 참조해 주세요.
self
고객님의 모든 방법에 대한 셀프 파라미터는 무엇입니까?것은은무?무 엇??★★★★★★★★★★★★★★★★★★★!바꿔 말하면, 인출과 같은 방법은 추상적인 고객의 계좌에서 돈을 인출하는 방법을 정의합니다.「)」에서는 순서를 Jeff instance.retraft(100.0)에 사용합니다.즉, "고객의 객체(셀프, 금액)에서 돈을 인출하는 방법(셀프, 금액)과 1달러 수치(금액)입니다.self는 탈퇴를 요구하는 고객의 인스턴스입니다.그건 내가 유추하는 것도 아니야, 제프retraft(100.0)는 Customer의 줄임말입니다.retraft(자주 볼 수 없는 경우) 코드입니다.
init self는 다른 메서드에서도 타당할 수 있지만 init은 어떻습니까?init을 호출할 때 오브젝트를 작성하는 중인데 어떻게 이미 자아가 존재할 수 있습니까?Python은 자기 패턴을 오브젝트가 만들어졌을 때까지 확장할 수 있습니다.정확히 맞지 않지만요.Jeff = Customer('Jeff Knupp', 1000.0)가 Jeff = Customer(Jeff, 'Jeff Knupp', 1000.0)에게 전화를 거는 것과 같다고 가정해 보십시오. 전달된 Jeff도 그 결과가 됩니다.
그렇기 때문에 init을 호출할 때 self.name = name과 같은 말로 객체를 초기화합니다.Self는 인스턴스이므로 jeff.name = name이라고 말하는 것과 같습니다.이것은 jeff.name = 'Jeff Knupp'와 같습니다.마찬가지로 self.balance = balance는 jeff.balance = 1000.0과 동일합니다.이 두 줄 뒤에 고객님의 오브젝트가 "초기화"되어 사용 가능한 상태로 간주됩니다.
__init__
init이 종료되면 발신자는 오브젝트를 사용할 준비가 된 것으로 간주할 수 있습니다.즉, Jeff = Customer('Jeff Knupp', 1000.0) 이후 Jeff에 대한 입출금 전화를 시작할 수 있습니다. Jeff는 완전히 초기화된 객체입니다.
Python 이 python
__init__
★★★★★★★★★★★★★★★★★」self
들은은 무엇? ???무인 does does 가 뭐죠?
self
슨 의사????「 」가 죠?
__init__
why ? 왜등)
제시된 예는 올바르지 않습니다.이것에 근거해 올바른 예를 작성하겠습니다.
class SomeObject(object):
def __init__(self, blah):
self.blah = blah
def method(self):
return self.blah
「」가 .__init__
오브젝트 작성 후 를 호출하여 오브젝트를 커스터마이즈합니다. 「 」를 하면, 「 」가 됩니다.SomeObject
'blah'
아래에서는 '.__init__
blah
:
an_object = SomeObject('blah')
self
는 '인수'의 인스턴스입니다.SomeObject
할당되다an_object
나중에 이 오브젝트에 대해 메서드를 호출할 수 있습니다.
an_object.method()
룩업,'도트 룩업'을 합니다.an_object.method
는 인스턴스를 함수의 인스턴스에 바인드하고 메서드(상기 호출)는 현재 "바인드" 메서드가 되었습니다.즉, 메서드콜에 인스턴스를 명시적으로 전달할 필요가 없습니다.
메서드 콜은 인스턴스가 닷이 있는 룩업에 바인드되었기 때문에 인스턴스를 취득하고 호출되면 실행하도록 프로그래밍된 모든 코드를 실행합니다.
는 암묵적으로 전달되었습니다.self
는 ""라고 불립니다.self
다른 하면 다른 이 될 수 .다른 합법적인 Python 이름을 사용할 수도 있지만, 다른 이름으로 바꾸면 다른 Python 프로그래머에 의해 타르나 페더링이 될 수 있습니다.
__init__
는 Python datamodel 매뉴얼에 기재되어 있는 특수한 방법입니다.인스턴스가 생성된 직후에 호출됩니다(통상은 를 통해).__new__
- 근데__new__
는, 불변의 데이터 타입을 서브 클래스 하고 있지 않는 한 필요 없습니다).
언급URL : https://stackoverflow.com/questions/625083/what-do-init-and-self-do-in-python
'programing' 카테고리의 다른 글
"in 절" 내의 MySQL 항목 수 (0) | 2022.10.08 |
---|---|
스크롤된 후 화면 상단에 div를 고정하려면 어떻게 해야 합니까? (0) | 2022.10.08 |
python matplotlib에서 축 문자 회전 (0) | 2022.10.08 |
빈 Panda DataFrame을 만들고 이를 채우는 방법? (0) | 2022.10.02 |
MySQL - SELECT * OUTFILE LOCAL? (0) | 2022.10.02 |