Home >Backend Development >Python Tutorial >Describe Python class properties

Describe Python class properties

coldplay.xixi
coldplay.xixiforward
2021-01-08 10:10:541839browse

Describe Python class properties

Related free learning recommendations: python video tutorial

  • ## __getattr__ is the getattr magic function that is called when the class calls an attribute that does not exist. The value item it passes in is the non-existent value you are calling.

class User(object):
    def __init__(self, name, info):
        self.name = name
        self.info = info
ls = User("李四",{"gender":"male"})print(ls.info)运行结果:{'gender': 'male'}
If you want to get the male attribute, you need to use the

__getattr__ magic method.

class User(object):
    def __init__(self, name, info):
        self.name = name
        self.info = info    def __getattr__(self, item):
        return self.info[item]ls = User("李四",{"gender":"male"})print(ls.gender)运行结果:
male
    Attribute descriptor is a powerful general protocol. It is the calling principle of properties, methods, static methods, class methods
  • and super().
  • Attribute descriptor is a class that implements a specific protocol. As long as any one of the three methods __get__, __set__ and __delete__ is implemented, this class is a descriptor, which can implement multiple attributes. One way to use the same access logic is to create an instance as a class attribute of another class.
  • If an object defines both __get__ and __set__ methods, it is called a data descriptor.
  • Objects that only define the __get__ method are called non-data descriptors.
  • Use class methods to create descriptors • Define an IntField class as a descriptor class • Create an instance of the IntField class as an attribute of another User class
class User:
    def __init__(self, age):
        self.age = age    def get_age(self):
        return (str(self.age) + '岁')

    def set_age(self, age):
        if not isinstance(age, int):
            raise TypeError('Type Error')
        self.age = age

tt=User(55)tt.set_age(60)print(tt.get_age())运行结果:60岁
    Descriptor Search order • When it is a data descriptor,
  • get__ has a higher priority than __dict When it is a non-data descriptor,
    dict__ has a higher priority than __get
For more programming-related knowledge, please visit:

Programming Teaching! !

The above is the detailed content of Describe Python class properties. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete