Home>Article>Backend Development> Describe Python class properties

Describe Python class properties

coldplay.xixi
coldplay.xixi forward
2021-01-08 10:10:54 1742browse

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 __dictWhen 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