OOP

OOP

https://blog.csdn.net/yjk13703623757/article/details/77918633

1. 创建类

name

  • 每个 Python 模块都包含内置的变量 name,当模块运行时,__name__等于文件名(包含了后缀.py)
  • 如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)
    main
  • main”等于当前执行文件的名称(包含了后缀.py)。
    所以当模块被直接执行时,name == 'main'结果为真;而当模块被import到其他模块中时,name == 'main'结果为假,就是不调用对应的方法。
class Employee:
    empCount = 0    # static

    # self 类似 Java 中的 this
    def __init__(self, name, salary):   # 构造器:self 代表类的实例,self 在定义类的方法时是必须有的(虽然在调用时不必传入相应的参数)
        self.name = name
        self.salary = salary
        Employee.empCount += 1

    def displayCount(self):
        print("Total Employee %d" % Employee.empCount)

    def displayEmployee(self):
        print("Name : ", self.name, ", Salary: ", self.salary)

if __name__ == '__main__':
    e = Employee("kobe", 200)   # 创建对象
    e.displayCount()
    e.displayEmployee()

    # 访问属性的方法
    print(hasattr(e, 'name'))   # f存在属性,返回 true
    print(getattr(e, 'name'))
    setattr(e, 'name', 'Jack') # Setter
    print(getattr(e, 'name'))
    delattr(e, 'name')   # 删除属性
    print(hasattr(e, 'name'))

2. 内置类属性

  • dict : 类的属性(包含一个字典,由类的数据属性组成)
  • doc :类的文档字符串
  • name: 类名
  • module: 类定义所在的模块(类的全名是'main.className',如果类位于一个导入模块mymod中,那么className.module 等于 mymod)
  • bases : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

3. 垃圾回收

一个内部跟踪变量,称为一个引用计数器
垃圾回收机制不仅针对引用计数为0的对象,同样也可以处理循环引用的情况。循环引用指的是,两个对象相互引用,但是没有其他变量引用他们。这种情况下,仅使用引用计数是不够的。Python 的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。作为引用计数的补充, 垃圾收集器也会留心被分配的总量很大(即未通过引用计数销毁的那些)的对象。 在这种情况下, 解释器会暂停下来, 试图清理所有未引用的循环。

4. 类的继承

posted @ 2024-01-26 12:46  爱新觉罗LQ  阅读(5)  评论(0编辑  收藏  举报