python class 的学习
作为一个android工程师,学习Python虽然大部分语法差不多跟Java一样,但是类这一块差别感觉还挺大,为了加深自己的记忆,于是写写学习笔记
class Person:#class 是关键字,person是类名
def eate(self):#self 是指当前类的实例对象,类似于Java的this,是一个普通方法必填的参数
print('eate')
def learn(self,name):
print(name)
obj = Person()
obj.eate()#注意调用的时候不用传入self这个参数
obj.learn('book')#注意调用的时候不用传入self这个参数
定义方法的时候总感觉怪怪的,第一个参数是必填,调用的时候又不用传,开始很不习惯这种方式
class Student:
name = 'name'#类变量,类似于Java的static静态变量
def __init__(self,age):
self.age = age#成员变量,类似于Java类实例的变量
print('创建了')
obj = Student()
Python内置类属性
class Student():
'学生的类'#类的文档字符串,好神奇啊,还能这么写在这里,不知道这算这个类的什么东西
name = 'name'#类变量,类似于Java的static静态变量
def __init__(self,age):
self.age = age#成员变量,类似于Java类实例的变量
print('创建了')
obj = Student(1)
print('Student.__dict__ : ',Student.__dict__)#__dict__ : 类的属性(包含一个字典,由类的数据属性组成)估计一般用不着吧
print('Student.__doc__ : ',Student.__doc__)#类的文档字符串,好神奇啊,还能这么写在这里,不知道这算这个类的什么东西
print('Student.__name__ : ',Student.__name__)#类名
print('Student.__module__ : ',Student.__module__)# 类定义所在的模块,打印出来个‘__main__’,没搞懂啥意思啊
print('Student.__bases__ : ',Student.__bases__)#类的所有父类构成元素(包含了一个由所有父类组成的元组)
输出:
创建了
Student.__dict__ : {'__dict__': <attribute '__dict__' of 'Student' objects>, '__doc__': '学生的类', '__weakref__': <attribute '__weakref__' of 'Student' objects>, '__init__': <function Student.__init__ at 0x000002EB4B8710D0>, 'name': 'name', '__module__': '__main__'}
Student.__doc__ : 学生的类
Student.__name__ : Student
Student.__module__ : __main__
Student.__bases__ : (<class 'object'>,)
python对象销毁(垃圾回收)
Python的垃圾回收和Java的不太一样:垃圾回收机制不仅针对引用计数为0的对象,同样也可以处理循环引用的情况。循环引用指
的是,两个对象相互引用,但是没有其他变量引用他们。这种情况下,仅使用引用计数是不够的。Python 的垃圾收集器实际上是一
个引用计数器和一个循环垃圾收集器。作为引用计数的补充, 垃圾收集器也会留心被分配的总量很大(及未通过引用计数销毁的那
些)的对象。 在这种情况下, 解释器会暂停下来, 试图清理所有未引用的循环。
类的继承
class Student(Person):