객체 지향은 현재 프로그래밍 언어의 매우 주류 아이디어입니다. Python은 객체지향을 매우 훌륭하게 구현하고 있습니다. 동시에 Python의 유연한 구문을 사용하면 몇 가지 멋진 객체 지향 기능을 얻을 수 있습니다.
Python은 처음부터 객체 지향 언어였기 때문에 Python에서는 클래스와 객체를 쉽게 만들 수 있습니다. 이번 장에서는 Python의 객체지향 프로그래밍을 자세히 소개하겠습니다.
이전에 객체지향 프로그래밍 언어를 접해본 적이 없다면 먼저 객체지향 언어의 몇 가지 기본 기능을 이해하고 기본적인 객체지향 개념을 머릿속에 형성해야 할 수도 있습니다. Python으로 객체지향 프로그래밍을 더 쉽게 배워보세요.
다음으로 객체지향의 몇 가지 기본 특성을 간략하게 이해해 보겠습니다.
객체지향에서 배우기 어려운 것은 개념이나 다른 지식이 아니라 객체지향 사고방식입니다.
객체지향의 기본 개념은 캡슐화, 상속, 다형성입니다.
첫 번째는 상속입니다.
클래스 정의:
코드는 다음과 같습니다.
class Bird(object): have_feather = True way_of_reproduction = 'egg'
이 클래스 호출:
코드는 다음과 같습니다.
summer = Bird() print summer.way_of_reproduction
Java와 달리 Python에는 new가 필요하지 않습니다. 클래스를 인스턴스화합니다.
마찬가지로 Python 클래스는 아래 메소드를 정의할 수 있습니다.
코드는 다음과 같습니다.
class Bird(object): have_feather = True way_of_reproduction = 'egg' def say(self, word='hi hi'): print 'i say :' + word
모든 클래스 함수에는 하나 이상의 매개변수가 있어야 하며 이 매개변수는 self여야 합니다.
클래스 외부의 함수에는 이러한 제한이 없습니다.
코드는 다음과 같습니다.
chk = Chicken() print chk.have_feather print chk.sat('hello')
__init__() 메서드
__init__()는 특수 메서드입니다. Python에는 몇 가지 특별한 메서드가 있으며 Python은 이를 특별한 방식으로 처리합니다. 특수 메소드 이름은 앞뒤에 두 개의 밑줄이 있는 것이 특징입니다.
__init__() 메서드의 특별한 점은 클래스에 이 메서드를 정의하면 이 클래스를 기반으로 객체를 생성하면 Python이 자동으로 이 메서드를 호출한다는 것입니다(이 프로세스를 초기화라고도 함).
예:
코드는 다음과 같습니다.
class happyBird(Bird): def __init__(self,more_words): print 'We are happy birds.',more_words hb = happyBird('Happy,Happy!')
부모 클래스 메서드의 오버로딩:
코드는 다음과 같습니다.
class Hello(object): name = 'hello' def __init__(self): self.name='my name is hello' #类中的参数必须带有self参数 def sayhi(self): print 'hi you' class World(Hello): def __init__(self): #这里访问的是父类初始化的变量名 print 'before:',Hello.name super(World,self).__init__() #由于调用了父类的初始化构造函数,继承了父类的变量的改变 print 'after:',self.name #近似于方法重载 def sayhi(self,word='baby'): #调用父类sayhi方法 super(World,self).sayhi() print 'hi '+word def sayWorld(self): print 'hi,hello world' if __name__ == '__main__': c = World() c.sayhi() c.sayWorld()
또한 Python에서는 다중 상속을 허용하지만 이는 매우 위험합니다. 조작을 함부로 사용하지 않는 것이 좋습니다.
Python의 다형성에 대해 JavaScript와 마찬가지로 인터페이스나 유형 변환 없이 객체의 속성에 직접 액세스할 수 있습니다.
유형 판단에는 특정 기능의 하위 클래스인지 판단하는 type() 함수와 isinstance() 함수가 있습니다.
다음과 같이 코드를 복사하세요.
isinstance(object, classinfo)
인스턴스가 이 클래스인지 아니면 객체가 변수인지 판단하세요.
classinfo가 유형(tuple, dict, int, float)인지 판단하세요. 변수는 이런 유형입니다.
class objA: pass A = objA() B = 'a','v' C = 'a string' print isinstance(A, objA) print isinstance(B, tuple) print isinstance(C, basestring)
True
True
True
위 내용은 Python 객체 지향 비디오 자료 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!