class 클래스이름:
def __init__(self, 인수, ...): #생성자
def 메서드이름(self, 인수, ...): #메서드
class Person:
def __init__(self, name):
self.name = name
print(self.name + "is initialized")
def work(self, company):
print(self.name + " is working in "+company)
def sleep(self):
print(self.name + "is sleeping")
obj = Person("PARK")
obj.work('abc')
obj.sleep()
print("current person object is ", obj.name)
👩💻결과
PARKis initialized
PARK is working in abc
PARKis sleeping
current person object is PARK
class PrivateMemberTest:
def __init__(self, name1, name2):
self.name1 = name1
self.__name2 = name2 #private member variable
print("1. initialized with "+name1+","+name2)
def getNames(self):
self.__printNames()
return str('4'), self.name1, self.__name2
def __printNames(self): #private member method
print('3. ',self.name1, self.__name2)
#인스턴스 생성
obj = PrivateMemberTest("Park", 'kim')
print(obj.name1)
print(obj.getNames())
#private 변수는 외부 객체로부터 직접 접근할 수 없다.
print(obj.__printNames()) #error 발생
print(obj.__name2) #error 발생
👩💻결과
1. initialized with Park,kim
Park
3. Park kim
('4', 'Park', 'kim')
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-89-46200654f1ce> in <module>
17 print(obj.name1)
18 print(obj.getNames())
---> 19 print(obj.__printNames()) #error 발생
20 print(obj.__name2)
AttributeError: 'PrivateMemberTest' object has no attribute '__printNames'
def print_name(name):
print("[def] ",name)
class SameTest:
def __init__(self):
pass
#외부함수와 동일한 이름으로 method 정의
def print_name(self, name):
print("[SameTest] ", name)
def call_test(self):
#외부 함수 호출
print_name("kim")
#클래스 내부 method 호출
self.print_name("kim")
#인스턴스 생성
obj = SameTest()
#print_name 함수 호출
print_name("lee")
#print_name method 호출
obj.print_name('lee')
#call method call_test
obj.call_test()
👩💻결과
[def] lee
[SameTest] lee
[def] kim
[SameTest] kim
<def calc(list_data):
sum =0
try:
sum = list_data[0] + list_data[1] + list_data[2]
if sum < 0:
raise Exception('Sum is minus')
except IndexError as err:
print(str(err))
except Exception as err:
print(str(err))
finally:
print(sum)
calc([1,2]) #list index out of range
calc([1,2,-100]) #Sum is minus
calc([1,2,3])
👩💻결과
list index out of range
0
Sum is minus
-97
6
open() => read() 또는 write() => close()
f = open('경로', 'w')
f.write("hello, python!")
f.close()
그러나 파이썬에서 with 구문을 사용하면 명시적으로 리소스 close()를 해주지 않아도 자동으로 close()해주는 기능이 있음. with 블록을 벗어나는 순간 파일이나 세션 등의 리소스를 자동으로 close 시킴
with 구문을 사용하는 방법
with open("파일경로",'w') as f:
f.write("Hellow python")