day-010-대상 프로그래밍 기초
대상방향 프로그래밍 기초
대상방향 기술 소개
1. 클래스 작성 및 인스턴스 객체 작성
여기서 주로 사용하는 class
키워드 형식은 다음과 같습니다.class Myclass:
'this a test class'
# do what you want
실례화 클래스의 다른 프로그래밍 언어에서는 일반적으로 키워드 new를 사용하지만, Python에는 이 키워드가 없습니다. 클래스의 실례화는 유사한 함수 호출 방식을 사용합니다.
다음은 클래스 이름 Employee를 사용하여 인스턴스화하고 init 방법을 통해 매개변수를 수신합니다.
더욱 명확한 인스턴스:class person:
'some body'
def __init__(self,name = 'nobody'):
self.name = name
def movet(self):
print('i can move')
def eat(self):
print('i can eat')
someone = person()
someone.movet()
someone.eat()
print(someone.__doc__)
thisone = person('zhaosi')
print(thisone.name)
결과:i can move
i can eat
some body
zhaosi
__doc__
를 통해 클래스의 설명을 볼 수 있고 편리하게 해 줄 수 있어요. self
약간 비슷해요. this
하지만 다른 이름을 불러도 돼요. 안 불러도 돼요.
2. 액세스 속성 self
를 사용하여 객체의 속성에 액세스합니다..
를 통해 속성을 증가하고 변경할 수 있으며, =
로 속성을 삭제할 수도 있고, 함수를 통해 실현할 수도 있다.
class Myclass:
'this a test class'
# do what you want
class person:
'some body'
def __init__(self,name = 'nobody'):
self.name = name
def movet(self):
print('i can move')
def eat(self):
print('i can eat')
someone = person()
someone.movet()
someone.eat()
print(someone.__doc__)
thisone = person('zhaosi')
print(thisone.name)
i can move
i can eat
some body
zhaosi
self
를 사용하여 객체의 속성에 액세스합니다..
를 통해 속성을 증가하고 변경할 수 있으며, =
로 속성을 삭제할 수도 있고, 함수를 통해 실현할 수도 있다.del
: 액세스 대상의 속성.getattr(obj, name[, default])
: 속성이 있는지 확인합니다.hasattr(obj,name)
: 속성을 설정합니다.속성이 없으면 새 속성이 만들어집니다.setattr(obj,name,value)
: 속성을 삭제합니다.인스턴스:
class student:
'this a student class'
student_cnt = 0
def __init__(self, name ,age):
self.name = name
self.age = age
student.student_cnt += 1
def can_study(self):
print('we need study')
def who_you_are(self):
print('i am ',self.name,', i am ', self.age, 'years young')
zhangsan = student('zhangsan',10)
lisi = student('lisi',12)
zhangsan.who_you_are()
lisi.who_you_are()
zhangsan.age = 13
zhangsan.who_you_are()
zhangsan.high = 130
print(zhangsan.high)
del zhangsan.high
print(hasattr(zhangsan,'high'))
print(getattr(lisi, 'name'))
setattr(lisi, 'high',120)
print(lisi.high)
delattr(lisi,'high')
print(hasattr(lisi,'high'))
결과:
i am zhangsan , i am 10 years young
i am lisi , i am 12 years young
i am zhangsan , i am 13 years young
130
False
lisi
120
False
이것은 비교적 강압적이다. 예를 들어 멤버 변수를 늘리고 삭제할 수 있다.66666
3. Python 내장 클래스 속성
바로 타고난 것으로, 주로 정보를 표시하는 것이다
delattr(obj, name)
: 클래스의 속성(한 사전 포함, 클래스의 데이터 속성으로 구성)__dict__
: 클래스 문서 문자열__doc__
: 유명__name__
: 클래스 정의가 있는 모듈(클래스의 전체 이름은__module__
이고 클래스가 가져오기 모듈'__main__.className'
에 있으면 mymod
는 className.__module__
와 같다mymod
__bases__
: 클래스의 모든 부류 구성 요소(모든 부류로 구성된 원조 포함)class testiner:
'this is test a __doc__'
def __init__(self):
pass
def i_have_a_pen(self):
print('i_have_a_pen')
def i_have_an_apple(self):
print('i_have_an_apple')
test = testiner
print(test.__dict__)
print(test.__doc__)
print(test.__name__)
print(test.__module__)
print(test.__bases__)
{'__module__': '__main__', '__doc__': 'this is test a __doc__', '__init__': , 'i_have_a_pen': , 'i_have_an_apple': , '__dict__': , '__weakref__': }
this is test a __doc__
testiner
__main__
(,)
한 종류를 이해하기 편리하다
4.python 대상 폐기(스팸 수거)
파이톤은 쓰레기를 추적하고 회수하기 위해 인용계수라는 간단한 기술을 사용했다.
Python 내부에는 모든 사용 중인 대상이 각각 얼마나 많은 인용을 가지고 있는지 기록되어 있습니다.인용 계수기라고 불리는 내부 추적 변수
대상이 만들어졌을 때 인용계수를 만들었습니다. 대상이 더 이상 필요하지 않을 때, 즉, 이 대상의 인용계수가 0이 되면 쓰레기로 회수됩니다.그러나 회수는'즉각'이 아니라 해석기가 적당한 시기에 쓰레기 대상이 차지하는 메모리 공간을 회수한다.
네가 쓰지 않아도 그는 회수할 것이니 메모리를 방출할지 말지 생각할 필요가 없다.
5. 상속과 다상속
대상을 향하면 계승이 있어야 하고 그 다음에 계승이 많아야 한다. 합금 같은 느낌은 대체로 이렇다.
상속:class cat (animal):
'this is one '
다중 상속:class taiji(taidi,keji):
' '
인스턴스:class person:
'i am a person'
def __init__(self,name,age):
self.name = name
self.age = age
def say(self):
print('i am ',self.name, ' , i am ', self.age, 'years young')
class student(person):
'i am a student'
def __init__(self,name,age,high):
person.__init__(self,name,age)
self.high = high
def say(self):
print('i am student ,i am ', self.high, 'cm')
class speak:
'test a speak'
def __init__(self,who,what):
self.who = who
self.who = what
def say(self):
print('test say')
class test(speak,student):
'test'
def __init__(self,who,what,name, age, high):
speak.__init__(self, who,what)
student.__init__(self, name,age,high)
test1 = test('xiaoming','duojicheng','xiaoming',12,120)
test1.say()
결과:test say
모두들 say
할 줄 알아요. 왼쪽부터 말해요.
6. 다시 쓰기
만약 당신의 부류 방법의 기능이 당신의 요구를 만족시키지 못한다면, 당신은 부류에서 당신의 부류를 다시 쓸 수 있습니다. 실례는 다음과 같습니다.class parent:
def say(self):
print('I think i can fly')
class son(parent):
def say(self):
print('no , you cant')
p = parent()
p.say()
s = son()
s.say()
super(son,s).say()
결과:I think i can fly
no , you cant
I think i can fly
7. 유형의 사유 방법
네 방법 앞에 __
를 더하면 된다. 예를 들면, class test:
def __you_cant_see(self):
pass
8. 연산자 재부팅
Python 역시 연산자 재부팅을 지원하므로 다음과 같이 클래스의 고유한 방법을 재부팅할 수 있습니다.class relaod:
'test str'
def __init__(self,testadd):
self.testadd = testadd
def __str__(self):
return ('this a new str')
def __add__(self, other):
return self.testadd + 2*other.testadd
class old:
' '
def say(self):
pass
a = relaod(10)
c = relaod(100)
print('a+c: ', a+c)
print('test a :', a)
b = old()
print('test b :', b)
결과:a+c: 210
test a : this a new str
test b : <__main__.old object="" at="">
이것은 디스플레이 전시로서, 주로 연산자를 다시 써서 연산하기 편리하고, 매번 길게 쓸 수 있다
문집 전송문 학습python 100일
전체 학습python 100일 디렉터리 전송문
무적 분할선
그리고 맨 뒤에 대신의 링크 전송문을 붙여주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
대상을 향하면 계승이 있어야 하고 그 다음에 계승이 많아야 한다. 합금 같은 느낌은 대체로 이렇다.
상속:
class cat (animal):
'this is one '
다중 상속:
class taiji(taidi,keji):
' '
인스턴스:
class person:
'i am a person'
def __init__(self,name,age):
self.name = name
self.age = age
def say(self):
print('i am ',self.name, ' , i am ', self.age, 'years young')
class student(person):
'i am a student'
def __init__(self,name,age,high):
person.__init__(self,name,age)
self.high = high
def say(self):
print('i am student ,i am ', self.high, 'cm')
class speak:
'test a speak'
def __init__(self,who,what):
self.who = who
self.who = what
def say(self):
print('test say')
class test(speak,student):
'test'
def __init__(self,who,what,name, age, high):
speak.__init__(self, who,what)
student.__init__(self, name,age,high)
test1 = test('xiaoming','duojicheng','xiaoming',12,120)
test1.say()
결과:
test say
모두들
say
할 줄 알아요. 왼쪽부터 말해요.6. 다시 쓰기
만약 당신의 부류 방법의 기능이 당신의 요구를 만족시키지 못한다면, 당신은 부류에서 당신의 부류를 다시 쓸 수 있습니다. 실례는 다음과 같습니다.class parent:
def say(self):
print('I think i can fly')
class son(parent):
def say(self):
print('no , you cant')
p = parent()
p.say()
s = son()
s.say()
super(son,s).say()
결과:I think i can fly
no , you cant
I think i can fly
7. 유형의 사유 방법
네 방법 앞에 __
를 더하면 된다. 예를 들면, class test:
def __you_cant_see(self):
pass
8. 연산자 재부팅
Python 역시 연산자 재부팅을 지원하므로 다음과 같이 클래스의 고유한 방법을 재부팅할 수 있습니다.class relaod:
'test str'
def __init__(self,testadd):
self.testadd = testadd
def __str__(self):
return ('this a new str')
def __add__(self, other):
return self.testadd + 2*other.testadd
class old:
' '
def say(self):
pass
a = relaod(10)
c = relaod(100)
print('a+c: ', a+c)
print('test a :', a)
b = old()
print('test b :', b)
결과:a+c: 210
test a : this a new str
test b : <__main__.old object="" at="">
이것은 디스플레이 전시로서, 주로 연산자를 다시 써서 연산하기 편리하고, 매번 길게 쓸 수 있다
문집 전송문 학습python 100일
전체 학습python 100일 디렉터리 전송문
무적 분할선
그리고 맨 뒤에 대신의 링크 전송문을 붙여주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
class parent:
def say(self):
print('I think i can fly')
class son(parent):
def say(self):
print('no , you cant')
p = parent()
p.say()
s = son()
s.say()
super(son,s).say()
I think i can fly
no , you cant
I think i can fly
네 방법 앞에
__
를 더하면 된다. 예를 들면, class test:
def __you_cant_see(self):
pass
8. 연산자 재부팅
Python 역시 연산자 재부팅을 지원하므로 다음과 같이 클래스의 고유한 방법을 재부팅할 수 있습니다.class relaod:
'test str'
def __init__(self,testadd):
self.testadd = testadd
def __str__(self):
return ('this a new str')
def __add__(self, other):
return self.testadd + 2*other.testadd
class old:
' '
def say(self):
pass
a = relaod(10)
c = relaod(100)
print('a+c: ', a+c)
print('test a :', a)
b = old()
print('test b :', b)
결과:a+c: 210
test a : this a new str
test b : <__main__.old object="" at="">
이것은 디스플레이 전시로서, 주로 연산자를 다시 써서 연산하기 편리하고, 매번 길게 쓸 수 있다
문집 전송문 학습python 100일
전체 학습python 100일 디렉터리 전송문
무적 분할선
그리고 맨 뒤에 대신의 링크 전송문을 붙여주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
class relaod:
'test str'
def __init__(self,testadd):
self.testadd = testadd
def __str__(self):
return ('this a new str')
def __add__(self, other):
return self.testadd + 2*other.testadd
class old:
' '
def say(self):
pass
a = relaod(10)
c = relaod(100)
print('a+c: ', a+c)
print('test a :', a)
b = old()
print('test b :', b)
a+c: 210
test a : this a new str
test b : <__main__.old object="" at="">
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.