Python 내장 함수 type 기반 새 유형 만들기

영문 문서:
class type(object)
class type(name, bases, dict)
With one argument, return the type of an object. The return value is a type object and generally the same object as returned by object.__class__.
The isinstance() built-in function is recommended for testing the type of an object, because it takes subclasses into account.
With three arguments, return a new type object. This is essentially a dynamic form of the class statement. The namestring is the class name and becomes the __name__ attribute; the bases tuple itemizes the base classes and becomes the __bases__ attribute; and the dict dictionary is the namespace containing definitions for class body and is copied to a standard dictionary to become the __dict__ attribute.
대상의 형식을 되돌려주거나 전송된 매개 변수에 따라 새로운 형식을 만듭니다
설명:
  1. 함수가 매개 변수만 전달되면 매개 변수 대상의 유형을 되돌려줍니다.반환 값은 객체 유형입니다. 일반적으로 객체와.__class__반환된 객체는 동일합니다.

# A
>>> class A:
  name = 'defined in A'

# A a
>>> a = A()

#a.__class__ 
>>> a.__class__
<class '__main__.A'>

#type(a) a 
>>> type(a)
<class '__main__.A'>

# 
>>> type(a) == A
True
 2. type 함수를 통해 대상이 특정한 유형의 실례인지 검사할 수 있지만, isinstance 함수를 사용하는 것을 추천합니다. 왜냐하면 isinstance 함수는 부류 하위 클래스 간의 계승 관계를 고려하기 때문입니다.

# B, A
>>> class B(A):
  age = 2

# B b
>>> b = B()

# type b A, False
>>> type(b) == A
False

# isinstance b A, True
>>> isinstance(b,A)
True
 3. 함수의 또 다른 사용 방식은 3개의 매개 변수를 전송하는 것이다. 함수는 3개의 매개 변수를 사용하여 새로운 유형을 만들 것이다.여기서 첫 번째 매개 변수name는 새로운 유형의 클래스 이름, 즉 유형의 ___로 사용됩니다.name__속성두 번째 매개변수는 요소 유형이 모두 클래스 유형인 메타그룹 유형으로, 새로 생성된 유형의 기본 클래스, 즉 유형의 ___로 사용됩니다.bases__속성세 번째 매개 변수dict는 새로 생성된 클래스의 주체 정의를 포함하는 사전입니다. 즉, 값이 형식의 __로 복사됩니다.dict__속성 중.

# A, InfoA
>>> class A(object):
  InfoA = 'some thing defined in A'

# B, InfoB
>>> class B(object):
  InfoB = 'some thing defined in B'

# C, InfoC
>>> class C(A,B):
  InfoC = 'some thing defined in C'

# type D, InfoD
>>> D = type('D',(A,B),dict(InfoD='some thing defined in D'))

#C、D 
>>> C
<class '__main__.C'>
>>> D
<class '__main__.D'>

# C、 D 
>>> c = C()
>>> d = D()

# c、 b 
>>> (c.InfoA,c.InfoB,c.InfoC)
('some thing defined in A', 'some thing defined in B', 'some thing defined in C')
>>> (d.InfoA,d.InfoB,d.InfoD)
('some thing defined in A', 'some thing defined in B', 'some thing defined in D')
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기