天池龙珠计划 Python训练营
所记录的知识点
- self
- 公有、私有(Python的伪私有)
- 单继承,子类调用父类的初始化方法
1、self
python的self 相当于c++的this指针
In [1]: class Test:
...: def print_self(self):
...: print(self)
...: print(type(self))
...: print(dir(self))
...:
In [2]: Test().print_self()
<__main__.Test object at 0x000001DAA4149BB0>
<class '__main__.Test'>
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'print_self']
2、公有、私有(Python的伪私有)
公有、私有属性
公有、私有方法
python的私有是伪私有,可以通过 实例._类名__变量名 或者 实例._类名__方法名()来调用
In [16]: class Test:
...:
...: def __init__(self,age):
...: self.__money = 100 # 私有变量
...: self.age = age # 公有变量
...:
...: def say_hello(self):
...: # 公有方法
...: print("say_hello")
...: print("hello")
...:
...: def __cal_money(self):
...: # 私有方法
...: print("__cal_money")
...: print(self.__money)
...:
In [17]: Test(12)._Test__money # 类外部访问私有属性
Out[17]: 100
In [18]: Test(12)._Test__cal_money() # 类外部访问私有方法
__cal_money
100
In [19]: Test(20).age
Out[19]: 20
In [20]: Test(20).say_hello()
say_hello
hello
3、单继承,子类调用父类的初始化方法
子类调用父类的初始化方法:super().\_\_init\_\_()
看 \_\_init\_\_ 方法中,"start" 和 "end" 的特殊设计
注意初始化时的顺序
In [28]: class Book:
...: def __init__(self):
...: print("Book __init__ start")
...: print("Book __init__ end")
...:
In [29]: class MathBook(Book):
...: def __init__(self):
...: print("MathBook __init__ start")
...: super().__init__()
...: print("MathBook __init__ end")
...:
...:
In [30]: MathBook()
MathBook __init__ start
Book __init__ start
Book __init__ end
MathBook __init__ end
Out[30]: <__main__.MathBook at 0x1daa3eb0370>
欢迎各位同学一起来交流学习心得!