Python에 Java 리플렉션에 해당하는 것이 있습니까?


Best answer

Java 및 C #에서 리플렉션을 사용하면 코드에서 클래스 또는 인스턴스를 조사하여 실행시 속성을 가져올 수 있습니다. 시각. 그들이 파이썬에서 사용하는 용어는 “내관”입니다. 자세한 내용은 Python introspection 가이드 를 참조하세요.

다음과 같이 할 수 있습니다.

#define a class

class Foo:

def bar(self):

return 123

#get the list of methodsmethodNames = filter(lambda x: not x.startswith("\_"), dir(foo.\_\_class\_\_))

#call the first method

getattr(foo, methodNames[0])()

그러나 Python은 “엄격한 유형이 아니므로 실제로 자체 설명 유형에 대한 개념이 없습니다”. 즉, 우리가 일반적으로 리플렉션을 사용하는 일부 (엔티티 모델, JsonConvert와 같은 사용자 지정 직렬화, 일부 IoC 패턴 및 일반적인 측면 지향 속임수)는 끔찍하게 번역되지 않습니다. 필자가 본 것에서 Python 인트로 스펙 션은 주로 자동 생성 된 도움말.

코딩 규칙을 사용하여 작업을 수행 할 수 있지만 컴파일러는 예상 한 것과 같은 작업을 강제 할 수 없습니다. “Thinking Python”은 익숙해지는 데 약간의 시간이 걸리며, 엄격한 유형 배경에서 온 경우 언어는 약간 불안정한 트레이드 오프를 만듭니다. 재미있는 부분은 코드 코딩에 더 많은 시간을 투자하고 프레임 워크 코딩에 더 적은 시간을 할애 할 수 있다는 것입니다. 익숙해지는 데 약간의 시간이 걸립니다.

답변

Python.

다른 언어를 첫 번째로 선택하려고 생각하지 마세요. 왜? 음,

  • Python은 쉽습니다. 저를 믿으세요. 저의 첫 번째 주요 언어는 C ++이었고, 이로 인해 경력 변화를 고민하게되었습니다. 다음은 화면에 “Hello world”를 표시하기위한 짧은 C ++ 코드입니다.-

#include

int main() {

std::cout << "Hello world!" << std::endl;

return 0;

}

다음은 Python에서도 마찬가지입니다.

print("Hello world!")

  • Python은 동적으로 입력됩니다. 도대체 그게 뭐야? 좋아요, 컴퓨터는 멍청합니다. 그들은 1이 숫자, 구체적으로 정수이고 컴퓨터 대화에서 "hello"가 단어 또는 "문자열"이라는 것을 알만큼 똑똑하지 않습니다. 따라서 일부 프로그래밍 언어는 작업중인 항목의 종류를 지정해야했습니다. 예를 들어 Java에서 두 개의 숫자를 추가해야하는 경우 수행해야 할 작업은 다음과 같습니다.-

class AddNums(){

public static void main(String args[]){

int first = 1;

int second = 2;

int sum = first + second;

System.out.println(sum);

}

}

“int”키워드가 보이십니까? 그것은 "정수"를 의미하며 기본적으로 컴퓨터에 "이봐,이 숫자를 저장할 무언가가 필요하지만 내가 지정한 숫자라는 것을 알기에는 너무 어리석기 때문에 변수가 "first"라는 이름은 정수 값을 저장할 수 있으며 여기에 1의 값을 지정했습니다. "second"및 "sum" "도 마찬가지입니다. 이것이 바로 Java입니다. Python에서?

first = 1

second = 2

sum = first + second

print(sum)

그게 얼마나 깨끗한 지 보십니까? 세미콜론이 전혀 없다는 점에 유의하세요.

  • Python은 모든 스타일의 프로그래밍을 지원합니다. 좋아요, 이것은 약간 논란의 여지가 있지만 여전히 언급 할 가치가 있습니다. 일반적으로 프로그래밍에는 객체 지향 및 절차의 두 가지 방법 (말장난이 아님)이 있습니다. 자세히 설명하지는 않겠지 만 짧게 말하면 둘 다 문제에 접근하는 좋은 방법이지만 Object Oriented는 대규모 프로젝트에 더 적합하며 올바르게 수행하면 (그 자체로 큰 문제) 더 깔끔해집니다. . 절차는 작은 프로젝트에서 작업을 수행하는 데 더 좋습니다. 예 :-

class Hello{

public static void main(String args[]){

System.out.println("Hello world!");

}

}

vs

def main():

print("Hello world!")

main()

  • 이제 Python과 Java는 모두 OOP (객체 지향 프로그래밍)를 지원하지만 Java는 다른 기능을 제공하지 않음으로써이를 강제합니다. 출구. 대기업과 대규모 프로젝트의 경우 좋은 일이 될 수 있지만 수업 이 무엇인지 모르는 사람에게는 큰 번거 로움이 될 수 있습니다. 반면에 Python을 사용하면 자신 만의 작업을 수행 할 수 있습니다. 다시 말하지만, 이것은 나쁜 일이 될 수 있지만 모두 당신이 선택하고 따르는 관행의 종류에 달려 있습니다. Ruby는 또 다른 언어이며 Python과 매우 비슷하지만 코더에게 더 관대하기 때문에 좋아하지 않습니다. 파이썬은 그 미세한 선을 유지합니다.하지만 예, 초보자의 경우 두 개의 숫자를 취하고 합계를 인쇄 할 수있는 무언가를 작성하는 것이지만 정말로 긴 실행하면 좋은 일이 될 수 있습니다.
  • Python은 거의 모든 곳에서 사용됩니다. 웹 개발? 검사. 침투 테스트? 검사. 멋진 게임을 만드시나요? 검사. Python으로 기본적으로 작성되지 않은 프로젝트에 대한 코드를 붙이나요? 검사. 학습 중이십니까? 그 소년을 다시 확인하십시오! 과학적 연구? 검사. 아카데믹? 검사. Android 앱 및 기타 확장 가능한 프로젝트…? Java는 당신의 것입니다. 네이티브 프로그래밍은 Python이 실패하는 한 곳입니다.

그게 전부라고 생각합니다. 두 언어 모두 자체 기능과 사용 용도가 훌륭하지만 Python은 초보자가 오늘 시작할 수있는 최고의 기능 중 하나입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다