python - 객체 정보 얻기
개체 정보 얻기
변수를 가져오면 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.