我无法理解_onRecentEntryAdded(Event event) {
setState(() {
recentMatchList.add(MatchDataModel.fromSnapshot(event.snapshot));
FirebaseDatabase.instance
.reference()
.child('match')
.child(event.snapshot.key)
.once()
.then((DataSnapshot snap) {
recentMatchList.add(MatchDataModel.fromSnapshot(snap));
});
});
}
行的工作方式。
乍一看,我们有三个变量,即name(instance variable),
age(实例变量)和age(class变量))。类变量age被初始化为AgeDiscriptori,即age = AgeDescriptor()
。在设置年龄时,该代码如何在内部工作以及如何调用age = AgeDescriptor()
和__set__
的discriptor方法。如何在内部执行此绑定。
__get__
答案 0 :(得分:0)
摘自M. Summerfield的“用Python 3编程:完整介绍”(第8章):
描述符是为其他类的属性提供访问控制的类。任何实现一个或多个描述符特殊方法
__get__()
,__set__()
和__delete__()
的类都称为(并且可以用作)描述符。内置的
property()
和classmethod()
函数是使用描述符实现的。理解描述符的关键是,尽管我们在类中创建了一个描述符的实例作为类属性,但是Python通过类的实例访问了该描述符。
因此,当您访问age
之类的e1.age
属性(或self.age
)时,会发生Person.age.__get__(...)
的情况,因为Python发现Person
类的描述符是名称age
,因此使用描述符获取属性的值。同样,当您想更改age
之类的e1.age = 100
属性(或self.age = 100
)时,会发生Person.age.__set__(...)
。