【从面向对象编程开始】
1、类中方法与一般的函数有一点不同,即方法的第一个参数必须是self,且在调用该方法时不用输入self的参数值(解释器会补充上去)
2、同一个python类的不同实例的变量可能不一样
3、通过在变量名前加双下划线__,可使变量不能被外部访问。但是__XXX__这样的变量是特殊变量,是可以访问的变量。另外,变量名前带单下划线_时该变量可被外部访问,但它的意思是尽量别访问。最后,python中没有任何机制来约束类中的private变量不被访问,全靠自觉(即使是__XXX也只是解释器修改变量名为_类名__变量名来达到不能被访问的目的)(可能有其他解释器修改变量名为其他格式)
4、“指向”和“绑定”的区别?
事实阐述:在python中,变量可指向任意数据类型还可指向函数;而一个类的实例并非指向而是绑定各种属性(属性包括各种数据类型和方法,所以本质上来说属性就是变量)。
猜想1:绑定的意思指不能被覆盖、替换,只能不断加入。指向则相反,是指可以被替换、取代。
猜想2:在类中的变量因为被绑定(感觉这儿的绑定只是名称上的绑定,这些变量还是可以指向任何“东西”的)所以在某种程度上具有了‘不变性’,因此换了一种说法,即属性。
5、关于type(...)函数
type(123)返回123的类型,而type(str)返回数据类型的类型(str的类型),即TypeType(TypeType是types模块中的常量)
6、获取对象信息的几个方法
type()
isinstance(123,int)
dir('ABC')#获得‘ABC’全部属性
hasattr(对象,‘属性名’)
getattr(对象,‘属性名’,属性名不存在时返回的值默认为None)
setattr(对象,‘待设置对象名’,希望指向的东西)