面向对象编程
- 隐藏属性:可以直接获取对象的属性,但最好定义一个方法来获取对象的属性。
私有方法:如果一个方法前带有两个– ,说明是个重要方法(进行了私有化)。私有方法不能直接调用,调用时一般先调用普通方法(公有方法),这时会根据是否满足一定条件来决定是否调用该方法的私有方法。
1 class Dog: 2 #private method 3 def __send_msg(self): 4 print("------sending message------") 5 #public method 6 def send_msg(self,new_money): 7 if new_money>10000: 8 self.__send_msg() 9 else: 10 print("not enough,please recharge") 11 12 dog = Dog() 13 dog.send_msg(1000)
__del__ 方法:当对象被完全删除时或者程序结束时(此时对象会自动释放),自动调用,来表达这一情况的发生。
- 用sys库的getrefcount(对象名) 可以测量一个对象的引用计数(道理同硬连接数),其结果为实际引用数+1。
-
- 类的继承:代码复用,少些代码。
定义子类方法: class 子类名(父类名)
子类继承时不会继承父类的私有方法和私有属性,除非是通过父类的方法来调用其的私有。
1 class A: 2 def __init__(self): 3 self.num1 = 100 4 self.__num2 = 200 5 def test1(self): 6 print("-------1------") 7 def __test2(self): 8 print("------2------") 9 10 def test3(self): 11 self.__test2() 12 print(self.__num2) 13 14 class B(A): 15 def test4(self): 16 self.__test2() 17 print(self.__num2) 18 19 b = B() 20 b.test1() 21 b.test3() 22 b.test4()
补充内容
- Vim中编辑中的撤销操作:
u 撤销上一步的操作;
Ctrl+r 恢复上一步被撤销的操作;
命令模式下按下dd键删除整行;
再按u撤销上一次操作。 - 当一个数据的硬链接数为0时,才会将数据删除。