python object oriented (reflection)

Keywords: Python Attribute

1. isinstance, type, issubclass

isinstance: judge whether the object you give is of type xx

Type: returns the data type of xxx object

issubclass: a subclass to determine whether the xxx class is xxx

class Animal:
    def eat(self):
        print("Just woke up to eat something")

class Cat(Animal):
    def play(self):
        print("Cats like to play")

c = Cat()

print(isinstance(c, Cat)) # True
print(isinstance(c, Animal)) # True

a = Animal()
print(isinstance(a, Cat)) # Can't judge down  False

print(type(a)) # Return a Data type of
print(type(c)) # Precisely tell you the data type of this object

# judge.xx Is class A xxxx Subclasses of classes
print(issubclass(Cat, Animal))  # True
print(issubclass(Animal, Cat))  # False


2. How to distinguish methods and functions

In class:

Instance method

If it is a class name. Method function

If it is an object, method

Class method: all methods

Static methods: all functions

    from types import MethodType, FunctionType


from types import FunctionType, MethodType  #  Modules introducing methods and functions
class Person:
    def chi(self): # Example method
        print("I want to eat fish.")

    def he(cls):
        print("I'm a class method")

    def pi():
        print("You are the real skin")

p = Person()

print(isinstance(Person.chi, FunctionType)) # True
print(isinstance(p.chi, MethodType)) # True

print(isinstance(p.he, MethodType)) # True
print(isinstance(Person.he, MethodType)) # True

print(isinstance(p.pi, FunctionType)) # True
print(isinstance(Person.pi, FunctionType)) # True


3. reflection

There are four functions

    attr: attribute


Get xxx property value from xxx object


Determine whether xxx property value exists in xxx object


Remove xxx property from xxx object


Set xxx property in xxx object to xxxx value


class Person:
    def __init__(self, name,wife): = name
        self.wife = wife

p = Person("baby", "Lin Chiling")

print(hasattr(p, "wife")) 
print(getattr(p, "wife")) # p.wife

setattr(p, "wife", "Hu Yi Fei") # p.wife = Hu Yi Fei
setattr(p, "money", 100000) # = 100000


delattr(p, "wife") # Put the xxx Attribute Removal. Not at all p.wife = None

Posted by Yeti on Sun, 01 Dec 2019 13:53:54 -0800