More Related Content Similar to Effective Python (20) More from SEMINARGROOT (20) Effective Python9. Item 2: Follow the PEP 8 Style Guide
Python Enhancement Proposal #8
a wealth of details about how to
write clear Python code.
updated as the Python language
evolves.
http://www.python.org/dev/peps/pep-0008/
10. Item 2: Follow the PEP 8 Style Guide
https://www.slideshare.net/japh44/type-annotations-in-python-whats-whys-and-wows
11. Item 2: Follow the PEP 8 Style Guide
https://www.slideshare.net/japh44/type-annotations-in-python-whats-whys-and-wows
15. Item 2: OOP
ํด๋์ค(class) ๋ฉ์๋
โ ํด๋์ค๋ฅผ ํตํด์ ์ฌ์ฉํ๋ฉฐ, ๋ฐ๋ผ์ ๊ฐ์ฒด์ ์์ฑ ์์ด๋
์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. (๊ฐ์ฒด์ ๋ฌด๊ดํ๋ฏ๋ก self๊ฐ ์์์ ์ ์)
โ ํด๋์ค ๋ฉ์๋์์ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ๊ฑฐ๋ ์ฌ์ฉํ๋ ค๋ ํ์๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค.
(๊ฐ์ฒด์ ๊ด๋ จ์ด ์๋ค)
โ cls ๋ผ๋ ํด๋์ค๋ฅผ ์๋ฏธํ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌ๋ฐ์, ํด๋์ค ๋ณ์ ๋ฑ์ ์ก์ธ์ค ํ ์ ์
๋ค. ์ฆ, ์ฒซ ๋ฒ์งธ ์ธ์๋ก๋ ํด๋์ค ์์ ์ด ์๋์ผ๋ก ์ ๋ฌ๋๊ณ ์ด ์ธ์๋ฅผ 'cls'๋ผ๊ณ ํ๋ค
โ ๋ฉ์๋ ์์ @classmethod ๋ผ๋ Decorator๋ฅผ ํ์
์ธ์คํด์ค(Instance) ๋ฉ์๋
โ ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ํตํด์ ์ฌ์ฉ๋๋ ๋ฉ์๋
โ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ดํ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ ์ฃผ๋ก ๊ฐ์ฒด์ ์์ฑ์ ์กฐ์, ๊ด๋ฆฌ ๋ฐ ์ ๋ณด์ ์
์ฑ์ ์ด์ฉ๋๋ค.
โ ์ธ์คํด์ค ๋ณ์์ ์์ธ์คํ ์ ์๋๋ก ๋ฉ์๋์ ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ํญ์ ๊ฐ์ฒด ์์ ์
์๋ฏธํ๋ "self"๋ผ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ๋๋ค. ์ฆ, ์ฒซ ๋ฒ์งธ ์ธ์ self๋ก ์ธ์คํด์ค ์์ ์ด ์๋
์ผ๋ก ํธ์ถ๋๋ค.
18. Item 2: OOP
์ธ์คํด์ค ๋ณ์: ํด๋์ค ์ ์์์ ๋ฉ
์๋ ์์์ ์ฌ์ฉ๋๋ฉด์
"self.๋ณ์๋ช
"์ฒ๋ผ ์ฌ์ฉ๋๋ฉฐ,
์ด๋ ๊ฐ ๊ฐ์ฒด ๋ณ๋ก ์๋ก ๋ค๋ฅธ ๊ฐ์
๊ฐ๋ ๋ณ์์ด๋ค.
ํด๋์ค ๋ณ์๊ฐ ํ๋์ ํด๋์ค์
ํ๋๋ง ์กด์ฌํ๋ ๋ฐ๋ฉด,
์ธ์คํด์ค ๋ณ์๋
๊ฐ ๊ฐ์ฒด ์ธ์คํด์ค๋ง๋ค
๋ณ๋๋ก ์กด์ฌํ๋ค.
19. Item 2: OOP
self๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด ์์ ์ด ๊ฐ์ง ์์ฑ์
๋ณํ์ํค๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ์์ฑ ๊ฐ์ด
์ ํํ๊ฒ ๊ด๋ฆฌ๋๋ค.
20. Item 2: OOP
โข์บก์ํ(encapsulation)๋ ๊ฐ์ฒด์ ์ธ๋ถ์์ ๊ฐ
์ฒด ๋ด๋ถ์ ์์ฑ์ ์ง์ ์ ์ผ๋ก ์ ๊ทผ, ์์ฑ์ ์ฝ๊ฑฐ
๋ ๋ณ๊ฒฝ์ํค์ง ๋ชปํ๊ฒ ํ๋ ๊ฒ์ ๋งํ๋ค.
โข๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผ, ์์ฑ์ ์ฝ๊ฑฐ๋ ๋ณ๊ฒฝํ๊ณ
์ถ์ผ๋ฉด ๋ฐ๋์ ํ๋ฝ๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด์๋ง์ด
๊ฐ๋ฅํ๋ค.
โ์ฌ๊ธฐ์์ ํ๋ฝ๋ ์ธํฐํ์ด์ค๋ ๊ฐ์ฒด๊ฐ
์ธ๋ถ๋ก ๊ณต๊ฐํ ๋ฉ์๋๋ฅผ ๋ปํ๋ค.
C++๋ Java์ ๊ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ๊ฐ์ฒด์ ์์ฑ์ด๋ ๋ฉ์๋์
์ ๊ทผ์ ์ ์ดํ๋ ์ ๊ทผ ์ง์ ์ (public, private, protected)๊ฐ ์ ๊ณต๋๋ค.
โขPython์์๋ ์ด๋ฐ ์ ๊ทผ ์ง์ ์๊ฐ ์๋ค.
โขPython ํด๋์ค์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋ฉค๋ฒ๊ฐ public์ด๋ผ๊ณ ํ ์ ์๋ค.
โขPython์์์ ์ ๊ทผ ์ง์ ์ ์ด๋ฆ ๊ท์น์ ํตํด ์ฒ๋ฆฌ๋๋ฉฐ, ํ๋ก๊ทธ๋๋จธ๊ฐ ์ ๊ทผ์ง์ ์
๋ํ ์ฑ
์์ ์ง๊ฒ ํ๋ค.
โขPython์์๋ ์ ๊ทผ ์ง์ ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ฐ์ค( _ )์ ์ฌ์ฉํ๋ค.
21. Item 2: OOP
โ๋ฐ์ค์ด ์์ผ๋ฉด : ๊ณต๊ฐ ๋ชจ๋๋ก์ ๊ฐ์ฒด ์ธ๋ถ์์
์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
โ๋ฐ์ค์ด ํ๋์ด๋ฉด : ๊ฐ์ฒด ์ธ๋ถ์์ ์ ๊ทผํด์๋
์ ๋๋ค.
โข์ฝ๋ฉ ๊ด๋ก์ ๋ด๋ถ์ ์ผ๋ก๋ง ์ฌ์ฉ๋๋ ๋ณ์ ๋๋
๋ฉ์๋์ ์ฌ์ฉ
โข ๊ทธ๋ฌ๋ public์ด๋ฏ๋ก ํ์ํ๋ฉด ์ธ๋ถ์์
์์ธ์ค ๊ฐ๋ฅ
โ๋ฐ์ค์ด ๋ ๊ฐ์ด๋ฉด : private ๋ชจ๋๋ก์
๊ฐ์ฒด ์ธ๋ถ ๋ฟ๋ง ์๋๋ผ ์์๋ฐ์ ๊ฐ์ฒด์์๋
์ ๊ทผ์ด ์ ๋๋ค.
1 public mode
2 ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ง ๋ฉ์๋ ํตํด ์ ๊ทผ ๊ถ์ฅ
3 private mode
22. Item 2: OOP
โข๊ฐ์ฒด(object)
โ์์ฑ(Attribute)๊ณผ ํ์(Action)๋ฅผ ๊ฐ์ง๊ณ
์์ผ๋ฉฐ ์ด๋ฆ์ ๋ถ์ผ ์ ์๋ ๋ฌผ์ฒด
โข์๋ฅผ ๋ค์๋ฉด ์๋์ฐจ, ํ์, ์ค๋งํธ ํฐ, ๋ชจ
๋ํฐ, ํค๋ณด๋, ํ๊ด๋ฑ, ์ฑ
, ๋ฆฌ๋ชจ์ปจ ๋ฑ
โขํด๋์ค(class)
โ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋
โข์ธ์คํด์ค(instance): ์ค๊ณ๋์ ๋ฐ๋ผ ์ค์
๋ก ๊ตฌํ๋ ๊ฒ
โข์ธ์คํด์ค(instance)ํ = ์ค์ฒดํ = ๋ฉ๋ชจ๋ฆฌ
์ ๊ตฌ์ถํ๋ค
โขํด๋์ค๋ฅผ ์ค์ฒดํ ํน์ ์ธ์คํด์คํ ์ํจ ๊ฒ
์ด ๊ฐ์ฒด์ด๋ค.
ex)
kim = Programmer()
์ด๋ ๊ฒ ๋ง๋ค์ด์ง kim์ ๊ฐ์ฒด์ด๋ฉฐ,
kim์ด๋ผ๋ ๊ฐ์ฒด๋
Programmer์ ์ธ์คํด์ค์ด๋ค.