250x250
Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 데이터 타입
- SQLD
- 프로그래머스
- CSV
- Crawling
- django
- HTML
- 조건문
- 자격증공부
- scraping
- 파이썬
- 크롤링
- time.sleep
- SQL 개발자
- 정리
- Python
- 스크랩핑
- 슬라이싱
- 데이터베이스
- lv0
- 태그
- SQL
- 파이선
- 정보처리기사
- 1과목
- 프로젝트
- 딕셔너리
- 메서드
- 튜플
- 자격증
Archives
- Today
- Total
나의 공부 일기
Python) Object 클래스 본문
728x90
Object 클래스란 파이썬에서 가장 기본적인 클래스를 말합니다.
모든 클래스가 가져야할 메서드를 정의하고 있습니다.
object 클래스에 정의된 메서드들입니다.
[]로 감싸져있는 것들은 필수요소가 아닙니다.
- __new__(cls[ , ...]): 객체 생성 시에 호출되는 메서드로, 해당 클래스의 인스턴스를 생성하고 변환시킴
class exam:
def __new__(cls, *args):
print("cls :", cls)
print('new :', args)
return super().__new__(cls)
obj = exam(1, 2, 3)
print(obj)
>>>
cls : <class '__main__.exam'>
new : (1, 2, 3)
<__main__.exam object at 0x000001F7943C7350>
여기서 *args는 여러 인자를 한번에 받게하는 파라미터 입니다.
- __init__(self[ , ...]): 객체 초기화 시에 호출되는 메서드로, 인스턴스 변수를 초기화하는 역할을함
class exam:
def __new__(cls, *args):
print("cls :", cls)
print('new :', args)
return super().__new__(cls)
def __init__(self, name, age):
print('__init__ :', self)
print('name :',name)
print('age :', age)
self.name = name
self.age = age
obj = exam("Kwak", 24)
print(obj)
>>>
cls : <class '__main__.exam'>
new : ('Kwak', 24)
__init__ : <__main__.exam object at 0x000001B71FF97810>
name : Kwak
age : 24
<__main__.exam object at 0x000001B71FF97810>
- __str__(self): 객체를 문자열로 표현할 때 호출되는 메서드로, 해당 객체의 문자열 표현을 반환함
class exam:
def __new__(cls, *args):
print('__new__')
print("cls :", cls)
print('new :', args)
return super().__new__(cls)
def __init__(self, name, age):
print()
print('__init__ :')
print('name :', name)
print('age :', age)
self.name = name
self.age = age
def __str__(self):
print()
print('__str__')
return f"{self.name} : {self.age}"
obj = exam("Kwak", 24)
print(obj)
>>>
__new__
cls : <class '__main__.exam'>
new : ('Kwak', 24)
__init__ :
name : Kwak
age : 24
__str__
Kwak : 24
- __repr __(self): 객체를 나타내는 문자열을 반환하는데, 이 문자열로 해당 객체를 완벽하게 재 생성할 수 있어야 함.
class exam:
def __init__(self, x, y):
print('__init__ :')
self.x = x
self.y = y
def __repr__(self):
print()
print('__repr__')
return f'exam({self.x}, {self.y})'
ex = exam(1, 2)
print(repr(ex))
>>>
__init__ :
__repr__
exam(1, 2)
- __eq __(self,other): 객체의 동등성 비교시에 호출되는 메서드로, 다른 객체와 같은지 비교함
class exam:
def __init__(self, x, y):
print('__init__ ')
self.x = x
self.y = y
def __eq__(self, other):
print()
print('__eq__')
return self.x == other.x and self.y == other.y
ex1 = exam(1, 2)
ex2 = exam(1, 2)
print(ex1 == ex2)
>>>
__init__
__init__
__eq__
True
- __hash__(self): 객체의 해시값을 반환. 해시값은 해당 객체를 딕셔너리의 키로 사용할 때 필요함
class exam:
def __init__(self, name, age):
print('__init__ ')
self.name = name
self.age = age
def __hash__(self):
print()
print('__hash__')
return hash((self.name, self.age))
ex1 = exam("Kwak", 24)
ex2 = exam("Kwak", 24)
print(hash(ex1))
print(hash(ex2))
>>>
__init__
__init__
__hash__
3499423490990093925
__hash__
3499423490990093925
- __getattr __(self,name): 객체에서 해당 속성을 찾을 수 없을 때 호출되는 메서드. 속성을 동적으로 생성하거나 다른 속성으로 대체할 수 있음
class exam:
def __init__(self, name, age):
print('__init__ ')
self.name = name
self.age = age
def __getattr__(self, name):
print()
print('__getattr__')
if name == "fullname":
return f"{self.name} : {self.age}"
else:
raise AttributeError(f"'exam' 개체에 속성이 없습니다. '{name}'")
ex = exam("Kwak", 24)
print((ex.fullname))
print((ex.fullnama))
>>>
__init__
__getattr__
Kwak : 24
AttributeError: 'exam' object has no attribute'fullnama'
- __setatter __(self,name,value): 객체의 속성을 할당할 때 호출되는 메서드. 속성값을 설정하거나 다른 작업을 수행할 수 있음
class exam:
def __init__(self, name, age):
print('__init__ ')
self.name = name
self.age = age
def __setattr__(self, name, value):
print()
print('__setattr__')
if name == "age":
if not isinstance(value, int):
raise ValueError(f"Age 는 정수여야 합니다.")
super().__setattr__(name, value)
ex = exam("Kwak", 24)
ex.age = 10
print(ex.age)
ex.age = 'five'
>>>
__init__
__setattr__
__setattr__
__setattr__
10
__setattr__
ValueError: Age must be an integer
- __delattr __(self,name): 객체의 속성을 할당할 때 호출되는 메서드. 해당 속성을 삭제하거나 다른 작업을 수행할 수 있음
class exam:
def __init__(self, name, age):
print('__init__ ')
self.name = name
self.age = age
def __delattr__(self, name):
print()
print('__delattr__')
if name == "age":
raise AttributeError(f"age'속성을 삭제할 수 없습니다.")
else:
super().__delattr__(name)
ex = exam("Kwak", 24)
del ex.name
print(ex.name)
del ex.age
>>>
__init__
__delattr__
AttributeError: 'exam' object has no attribute 'name'
AttributeError: age'속성을 삭제할 수 없습니다.
- __dir __(self): 객체의 속성 목록을 반환. dir() 내장 함수의 작동 방식을 제어하는 메서드임
class exam:
def __init__(self, name, age):
print('__init__ ')
self.name = name
self.age = age
def __dir__(self):
print()
print('__dir__')
return ["name","age","fullname"]
ex = exam("Kwak", 24)
print(dir(ex))
>>>
__init__
__dir__
['age', 'fullname', 'name']
- __class __(self): 객체의 클래스를 반환
class exam:
def __init__(self, name, age):
print('__init__ ')
self.name = name
self.age = age
ex = exam("Kwak", 24)
print(ex.__class__)
>>>
__init__
<class '__main__.exam'>
- __format __(self,format_spec): 객체를 포맷팅할 때 호출되는 메서드로, format() 함수와 str.format() 메서드의 작동 방식을 제어함
class exam:
def __init__(self, x, y):
print('__init__ ')
self.x = x
self.y = y
def __format__(self, format_spec):
print()
print('__format__')
if format_spec == 'r':
return f"({self.y} , {self.x})"
else:
return f"({self.x} , {self.y})"
def __str__(self):
print()
print('__str__')
return f"[{self.x}, {self.y}]"
ex = exam(1, 2)
print(format(ex))
print(format(ex, 'r'))
print(ex)
>>>
__init__
__format__
(1 , 2)
__format__
(2 , 1)
__str__
[1, 2]
728x90
'파이썬 > 파이썬 정리' 카테고리의 다른 글
Python) 파이썬 내장함수들 (0) | 2023.10.26 |
---|---|
Python) Exception - 예외처리 (1) | 2023.10.25 |
Python) getter/setter (0) | 2023.10.23 |
Python) 정보은닉(Information Hiding) (1) | 2023.10.20 |
Python) 함수 / 메서드 (0) | 2023.10.19 |