Python(10)
-
[Python] __call__함수
파이썬은 __(double underscore)로 시작하는 magic method로 클래스가 특별한 동작을 수행하게 할 수 있음 함수호출처럼 클래스의 객체도 호출할 수 있게 만들어주려면 __call__이라는 매직매소드 필요 callable함수를 통해 호출가능한 객체인지 확인할 수 있다. (활용 예) 출처 : https://github.com/rosinality/style-based-gan-pytorch/blob/master/model.py class EqualLR: def __init__(self, name): self.name = name def compute_weight(self, module): weight = getattr(module, self.name + '_orig') fan_in = wei..
2021.07.26 -
[python] *args , **kwargs
- *args *arguments의 줄임말. = 꼭 이렇게 쓸 필요는 없다. *a, *names등등 다 가능 여러개의 인자를 받고자 할 때 쓰임 일반 변수보다는 뒤에 위치하도록 해야함. 그렇지 않으면 오류가 난다. ex. 학생 이름들을 인자로 받고 싶어요! def print_names(*names): for name in names: print(name) print('names: ', names, 'type:', type(names)) if __name__ == '__main__': print_names('홍길동', '김철수') 여러 인자가 튜플 형태로 들어와서 출력된다! - **kwargs keyword argument의 줄임말 키워드 = 특정값 형태로 함수호출 가능 이렇게 들어온 인자는 딕셔너리 형태..
2021.07.19 -
hasattr(object, name) / getattr(object, name) / setattr(object, name)
object의 속성(attribute) 존재를 확인한다. 만약 argument로 넘겨준 object 에 name 의 속성이 존재하면 True, 아니면 False를 반환한다. __builtin__ module에 포함된 function 내부적으로 getattr(object, name)을 이용 -> 수행시 exception이 발생하는지 하지 않는지를 통해 판단 class cls: a = 1 def __init__(self): self.x = 3 def b(self): pass # cls에 b라는 멤버가 있는지 확인 print(hasattr(cls, 'b')) # cls에 x라는 멤버가 있는지 확인 print(hasattr(cls, 'x')) # cls에서 a변수의 값 가져오기 print(getattr(cls,..
2021.06.15 -
class 이름/ class 변수 참조
1. class 이름 참조 클래스명.__name__ 클래스 내부에서 self.__class__.__name__ 2. class 변수 참조 클래스명.변수명 클래스 내부 self.__class__.변수명 ex) class Person: condition = 'student' def __init__(self, name, age): self.name = name self.age = age def echo(self): print(self.__class__.__name__) # 클래스 이름 print(self.__class__.condition) # 클래스 변수 print(self.name) # 인스턴스 변수 if __name__ == '__main__': person1 = Person('챙', 24) person..
2021.06.15 -
__getitem__
리스트처럼 클래스의 인스턴스 자체도 슬라이싱을 할 수 있도록 만들 때 필요한 속성이 __getitem__이라는 속성 1. 직접 인스턴스에 접근해 슬라이싱 class CustomNumbers: def __init__(self): self._numbers = [n for n in range(1, 11)] a = CustomNumbers() a._numbers[2:5] # [3, 4, 5] 2. getitem 특별 메소드로 인스턴스 변수에 접근하지 않고 객체 자체를 통해 슬라이싱을 구현 __getitem__함수는 인덱스를 인수로 받아야 한다. class CustomNumbers: def __init__(self): self._numbers = [n for n in range(1, 11)] def __getit..
2021.05.21 -
Python argparse
import argparse argparse는 python에 기본으로 내장되어 있다. 더보기 The argparse module makes it easy to write user-friendly command-line interfaces. The program defines what arguments it requires, and argparse will figure out how to parse those out of sys.argv. The argparse module also automatically generates help and usage messages and issues errors when users give the program invalid arguments. import argpar..
2021.05.09