python - 객체 정보 얻기

10214 단어

개체 정보 얻기


변수를 가져오면 isinstance () 로 변수가 어떤 유형의 실례인지 판단하는 것 외에 더 많은 정보를 얻을 수 있는 방법이 있습니까?
예를 들어 다음과 같은 정의가 있습니다.
class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

class Student(Person):
    def __init__(self, name, gender, score):
        super(Student, self).__init__(name, gender)
        self.score = score
    def whoAmI(self):
        return 'I am a Student, my name is %s' % self.name

먼저 type() 함수를 사용하여 Type 객체를 반환하는 변수 유형을 가져올 수 있습니다.
>>> type(123)
'int'>
>>> s = Student('Bob', 'Male', 88)
>>> type(s)
<class '__main__.Student'>

다음으로, dir() 함수를 사용하여 변수의 모든 속성을 가져올 수 있습니다.
>>> dir(123)   #  ...
['__abs__', '__add__', '__and__', '__class__', '__cmp__', ...]

>>> dir(s)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'gender', 'name', 'score', 'whoAmI']

인스턴스 변수의 경우 dir()는 ` 을 포함한 모든 인스턴스 속성을 반환합니다.class__`이런 특수한 의의가 있는 속성.메서드'whoAmI'도 s의 속성입니다.
어떻게 없애나요`xxx__`이런 특수한 속성은 우리가 정의한 속성만 보존합니까?Filter () 함수의 용법을 되돌아봅시다.
dir () 가 반환하는 속성은 문자열 목록입니다. 만약 속성 이름을 알고 있다면, 대상의 속성을 가져오거나 설정하려면 getattr () 와 setattr () 함수를 사용해야 합니다.
>>> getattr(s, 'name')  #  name 
'Bob'

>>> setattr(s, 'name', 'Adam')  #  name 

>>> s.name
'Adam'

>>> getattr(s, 'age')  #  age , , :
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'Student' object has no attribute 'age'

>>> getattr(s, 'age', 20)  #  age , , 20:
20

과업


Person 클래스에 대한 정의:
class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

name과gender를 제외하고 임의의 키워드 파라미터를 제공하여 실례에 귀속시키려면 Person의 를 수정하십시오init__() 를 정의하여 기능을 완료합니다.

코드

class Person(object):

    def __init__(self, name, gender, **kw):
        self.name = name
        self.gender = gender
        #self.__dict__.update(kw)
        for k,v in kw.items():
            setattr(self,k,v)

p = Person('Bob', 'Male', age=18, course='Python')
print (p.age)
print (p.course)

실행 결과

18
Python

좋은 웹페이지 즐겨찾기