다른 클래스의 한 클래스에서 함수 내에서 선언 한 변수를 사용하고 싶습니다.다른 클래스 (파이썬)의 클래스 함수에서 변수 사용하기
예를 들어 다른 클래스에서 변수 "j"를 사용하고 싶습니다. 가능한가? (나는 어딘가에서 인스턴스 변수와 관련이있을 수 있지만 개념을 완전히 이해할 수는 없다는 것을 읽었다.)
class check1:
def helloworld(self):
j = 5
다른 클래스의 한 클래스에서 함수 내에서 선언 한 변수를 사용하고 싶습니다.다른 클래스 (파이썬)의 클래스 함수에서 변수 사용하기
예를 들어 다른 클래스에서 변수 "j"를 사용하고 싶습니다. 가능한가? (나는 어딘가에서 인스턴스 변수와 관련이있을 수 있지만 개념을 완전히 이해할 수는 없다는 것을 읽었다.)
class check1:
def helloworld(self):
j = 5
class check1:
def helloworld(self):
self.j = 5
check_instance=check1()
print (hasattr(check_instance,'j')) #False -- j hasn't been set on check_instance yet
check_instance.helloworld() #add j attribute to check_instance
print(check_instance.j) #prints 5
하지만 당신은 클래스 인스턴스에 새로운 속성을 할당하는 방법이 필요하지 않습니다 ...
이제check_instance.k=6 #this works just fine.
당신은 check_instance.j
(또는 check_instance.k
)를 사용할 수 있습니다 다른 변수를 사용하십시오.
check_instance.helloworld()
은 완전히 동일하다 : (
check1.helloworld(check_instance)
당신이 그것에 대해 생각한다면 조금, 즉 무엇을 설명하고 당신이 배울 때까지
이 5 월 마법 같은 조금 보인다 self
매개 변수는입니다.) 난 당신이 여기에 달성하려는 것을 완전히 확실하지 않다
- 클래스의 모든 인스턴스에 의해 공유되는 클래스 변수도 있습니다 ...
class Foo(object):
#define foolist at the class level
#(not at the instance level as self.foolist would be defined in a method)
foolist=[]
A=Foo()
B=Foo()
A.foolist.append("bar")
print (B.foolist) # ["bar"]
print (A.foolist is B.foolist) #True -- A and B are sharing the same foolist variable.
나는 많은 노력을 기울이지 않았습니다. 이 질문에 대답합니다. 질문하는 사용자는 한 번 대답을 수락하지 않았거나 하나의 의견을 남기거나 질문을 게시 한 후 다른 활동을했습니다 ... 좋은 대답 – chown
@chown : 아마도 맞을지라도 사용자는 아무런 활동도하지 않고 언제나 그 사람이 내 게시물을 읽음으로써 무언가를 배우기를 바랍니다. – mgilson
@ 질문에서 언급하지 않은 사실은 내가 그것을 받아 들였다는 것을 의미합니다. 전에 두 가지 질문 (내가 아직도 혼란 스러울 때 그것에있는 ns). – afroze
j
다른 클래스에서는 보이지 않습니다. 그러나 나는 당신이 self.j
을 의미한다고 생각합니다. 당신이 것처럼
class A(object):
def __init__(self, x):
self.x = x
class B(object):
def __init__(self):
self.sum = 0
def addA(self, a):
self.sum += a.x
a = A(4)
b = B()
b.addA(a) # b.sum = 4
감사합니다. (: – afroze
매우이다 inheritane 클래스를 사용하여 쉽게를 "주"인스턴스 변수
예 :
class A:
def __init__(self):
self.a = 10
def retb(self):
return self.b
class B(A):
def __init__(self):
A.__init__(self)
self.b = self.a
o = B()
print o.a
print o.b
print o.retb()
A '기능'(클래스 정의 내)이 문맥 작성된 '방법'으로 알려져있다. 파이썬에서 함수는 기본적으로 '인스턴스'메소드입니다. '인스턴스 메소드'의 첫 번째 매개 변수 (이 경우'self'는 항상 정의 된 클래스의 '인스턴스'입니다 (예 :'self'는'check1' 객체입니다). .j = 5',이 특정'self'에 대한 참조가있는 값으로 볼 수 있습니다. – Darthfett
@Darthfett 대답으로 써야합니다. – zigg